我是编码和找到自己的新手!我在codechef http://www.codechef.com/problems/RRSTONE解决了一个问题。 所有的测试案例都在我身边传递,但答案仍然是错误的。任何帮助???
//codechef stones
#include<stdio.h>
int main(int argc, char *argv[])
{
unsigned int size; //N=size
unsigned long int k; //k = K
scanf("%u %lu",&size,&k);
long int a[size], max;
int i,j;
for(i=0;i<size;i++)
scanf("%lu",&a[i]);
i=j=0;
if(k==0)
goto printing;
if(k%2==1)
k=1;
else
k=2;
for(j=0;j<k;j++)
{
max=a[0];
for(i=0;i<size-1;i++)
{
if(max<a[i])
max=a[i];
}
for(i=0;i<size;i++)
a[i]=max-a[i];
}
printing: //removed this comment
for(i=0;i<size-1;i++)
printf("%d ",a[i]);
printf("%d",a[i]);
return 0;
}
答案 0 :(得分:-1)
我建议你应该正确看待这些标准。
约束
Ai的绝对值不超过 2 * 10 ^ 9 。
以下是修改过的代码,请尝试使用此功能。
还有一件事:因为你正在学习首先理解代码。
#include<stdio.h>
int main(int argc, char *argv[])
{
unsigned int size; //N=size
unsigned long int k; //k = K
scanf("%u %lu",&size,&k);
long long int a[size], max; //CHANGE HERE!!!! and so forth for long long
int i,j;
for(i=0;i<size;i++)
scanf("%lld",&a[i]);
i=j=0;
if(k!=0)
{
if(k%2==1)
k=1;
else
k=2;
for(j=0;j<k;j++)
{
max=a[0];
for(i=1;i<size;i++)
{
if(max<a[i])
max=a[i];
}
for(i=0;i<size;i++)
a[i]=max-a[i];
}
}
for(i=0;i<size;i++)
printf("%lld ",a[i]);
return 0;
}
编辑:对不起,我忘记了这个说明。当您使用在线编译器时,有时会出现 goto 问题,因此最好尝试使用干净的方法,并确保为源语言选择正确的选项( C-gcc或C99你正在使用)。早些时候我也经历过同样的事情。