问题:Ekka和他的朋友Dokka决定购买蛋糕。他们俩都喜欢蛋糕,这就是为什么要在购买蛋糕后分享蛋糕。顾名思义,Ekka非常喜欢奇数,而Dokka非常喜欢偶数,所以他们希望将蛋糕除以Ekka占有N平方厘米的份额,而Dokka占有M平方厘米的份额,其中N是奇数M是偶数N和M均为正整数。
他们希望将蛋糕除以N * M = W,其中W是他们设置的破折号。现在,您知道了他们的冲动因素,您必须确定他们是否可以购买所需的蛋糕。
输入 输入以整数T(≤10000)开头,表示测试用例的数量。
每种情况都包含一个整数W(2≤W <2 ^ 63)。 W将不是2的幂。
输出 对于每种情况,请首先打印情况编号。之后,如果他们不能购买所需的蛋糕,则打印“不可能”。如果他们可以买到这样的蛋糕,则必须打印N和M。如果有多个解决方案,则在M尽可能小的情况下打印结果
时间限制:2秒
我已经尝试过样本输入,并且得到与输出相同的结果。
样本输入
3
10
5
12
用于样本输入的输出
案例1:5 2
情况2:不可能
情况3:3 4
我的代码:
#include<stdio.h>
#include<math.h>
int main()
{
int t,k;
scanf("%d",&t);
for(k=1;k<=t;k++)
{
int a,i,j=1,c;
scanf("%d",&a);
for(i=2;i<sqrt(a)+2;i++)
{
if(a%i==0 && i%2!=0)
c=i;
}
int b=a/c;
if(b%2==0 && b*c==a)
printf("Case %d: %d %d\n",k,c,b);
else
printf("Case %d: Impossible\n",k);
}
return 0;
}
Light OJ为我的解决方案授予TLE。
答案 0 :(得分:2)
您的解决方案是giving TLE
。
也许您需要对其进行一些优化。
我建议的一件事是:
如果数字W为not divisible by 2
,则打印"Impossible"
。
如果数字W可被2整除,则将数字除以2,直到becomes an odd number.
因此,生成的奇数将是一个份额,W/odd_number
将是其他份额。