超级超级郁闷。。一道水题交了一晚上的错误,我至今都没明白到底错在哪。。该找的测试数据也都找过验证了,还是错,真心无语了,用JAVA重写就AC了,真是莫大的讽刺!!!完全一模一样的逻辑,算了。。不浪费时间在这上面了
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
int prime[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47,
53, 59, 61, 67, 71, 73, 79, 83, 89, 97 };
Scanner sc = new Scanner(System.in);
while (sc.hasNext())
{
String[] ss = sc.nextLine().split(" ");
String[] ss1 = ss[0].split(",");
String[] ss2 = ss[1].split(",");
int[] a = new int[ss1.length];
int[] b = new int[ss2.length];
for (int i = 0; i < a.length; i++)
a[i] = Integer.parseInt(ss1[ss1.length - 1 - i]);
for (int i = 0; i < b.length; i++)
b[i] = Integer.parseInt(ss2[ss2.length - 1 - i]);
int l = a.length > b.length ? a.length : b.length;
int[] r = new int[l + 1];
int prev = 0;
int i;
for (i = 0; i < l; i++)
{
int i1 = i < a.length ? a[i] : 0;
int i2 = i < b.length ? b[i] : 0;
int res = i1 + i2 + prev;
prev = res >= prime[i] ? 1 : 0;
r[i] = prev > 0 ? res - prime[i] : res;
}
if (prev > 0)
r[i] = prev;
i = l;
while (i >= 0 && r[i] == 0)
i--;
if (i == -1)
System.out.println("0");
else
{
for (; i >= 0; i--)
System.out.format(i > 0 ? "%d," : "%d", r[i]);
System.out.println();
}
}
}
}
想了想还是把WA的代码附上吧,找了几小时都找不出错在哪
/*
*
* fucking Wrong Answer!!!!!*/
#include<stdio.h>
#include<string.h>
int main()
{
int prime[] =
{ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113 };
int a[100], b[100], r[100];
char s[512];
while (gets(s) != NULL)
{
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(r, 0, sizeof(r));
int i, number = 0, al = 0, bl = 0;
for (i = 0; s[i] != ' '; i++)
{
if (s[i] == ',')
{
a[al++] = number;
number = 0;
}
else
number = number * 10 + s[i] - '0';
}
a[al++] = number;
number = 0;
for (i++; s[i] != '\0'; i++)
{
if (s[i] == ',')
{
b[bl++] = number;
number = 0;
}
else
number = number * 10 + s[i] - '0';
}
b[bl++] = number;
int prev = 0;
for (i = 0; al - 1 - i >= 0 || bl - 1 - i >= 0; i++)
{
int aa = al - 1 - i >= 0 ? a[al - 1 - i] : 0;
int bb = bl - 1 - i >= 0 ? b[bl - 1 - i] : 0;
int res = aa + bb + prev;
prev = res / prime[i];
r[i] = res % prime[i];
}
if (prev)
r[i++] = prev;
while (i >= 1 && r[i - 1] == 0)
i--;
if (!i)
putchar('0');
else
for (number = i - 1; number >= 0; number--)
printf(number ? "%d," : "%d", r[number]);
putchar('\n');
}
return 0;
}