ZOJ-2529

超级超级郁闷。。一道水题交了一晚上的错误,我至今都没明白到底错在哪。。该找的测试数据也都找过验证了,还是错,真心无语了,用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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值