关于ACM题目 有什么好建议吗
最近参加了比赛 题目是ACM题目 就算能拿到结果也不能AC通过 时间限制和内存都不是限制我遇到的问题 问题是 我输出的格式 好像老是不符合
就我刚写的 大数加法运算吧 因为为了节省空间 。。下面代码很乱 建议别看 请问有什么好方法可以让自己的代码被AC通过
#include <stdio.h>
#include <string.h>
#define MAX(i,j) (i >= j ? number1 :number2) //这两个的作用是 为了节省空间 把number1 number2两者的数据加法合
#define max(i,j) (i >= j ? i : j) //放入较大数据的一组 所以得用这两个来改变变化的变量
#define hen(i,j) (MAX(i,j)[max(i,j)])
int main ()
{
char number1[1001],number2[1001],sum,ad = ' '; //1000位的大数
int n,i,j,k1,l=1;
scanf ("%d",&n);
while (n-- && scanf ("%s%s",&number1,&number2) != EOF )
{
printf ("case %d: %s + %s ",l++,number1,number2);
for ( j = strlen(number2) - 1,i = strlen(number1) - 1; i>=1 && j>=1; i--,j--) //先考虑到最大数字前1位的情况
{
sum = number1[i] + number2[j] -48;
(sum > '9' +10)? (MAX(i,j)[max(i,j)-1] += 2,hen(i,j) = sum - 20) : ((sum > '9')?(MAX(i,j)[max(i,j)-1]++,hen(i,j) = sum - 10):(hen(i,j) =sum));
}
if (i == j)
{
sum = number1[0] + number2[0] - 48;
(sum > '9'+10) ? (MAX(i,j)[0] = sum -20,ad = '2') : ((sum > '9') ? (ad = '1',MAX(i,j)[0] = sum -10) :( MAX(i,j)[0] = sum));
printf (" = %c%s\n",ad,number1);
}
else
{
k1 =max(i,j);
sum = MAX(j,i)[0] + MAX(i,j)[max(i,j)] - 48;
(MAX(i,j)[k1] > '9'+10) ? (MAX(i,j)[--k1] += 2, MAX(i,j)[k1+1] = sum -10) : ((MAX(i,j)[k1] > '9') ? (MAX(i,j)[--k1] += 1,MAX(i,j)[k1+1] = sum -10) : (MAX(i,j)[k1] = sum));
for (; k1>=0; k1--)
(MAX(i,j)[k1] >'9'+10) ? (MAX(i,j)[k1-1] += 2,MAX(i,j)[k1] -= 20) : (MAX(i,j)[k1] > '9' ? (MAX(i,j)[k1-1] += 1,MAX(i,j)[k1] -= 10) :n);
(MAX(i,j)[0] >'9' +10) ? (ad = '2',MAX(i,j)[0] -= 20) : (MAX(i,j)[0] > '9' ? (MAX(i,j)[k1] -= 10,ad = '1') : n);
printf ("= %c%s\n",ad,MAX(i,j));
}
}
return 0;
}