poj 1504 我想问下为什么会TLE超时?

cdddfq 2015-05-05 11:13:30
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
int n,i,j;
char str[100];
int fin[104];
scanf("%d",&n);
while(n--)
{
memset(fin,0,sizeof(fin));
int len,t=2;
while(t--){
scanf("%s",str);
getchar();
len=strlen(str);
int temp=0,c;
for(i=len-1,j=0;i>=0;i--,j++)
{
c=str[i]-'0'+fin[j]+temp;
temp=c/10;
fin[j]=c%10;
}//for
while(temp>0)
{
c=temp+fin[j];
fin[j]=c%10;
temp=c/10;
j++;
}
}//while(t)
int left=0,right=103;
while(1)
{
if(fin[right]==0)
right--;
else
break;
}
while(1)
{
if(fin[left]==0)
left++;
else
break;
}
for(i=left;i<=right;i++)
{
printf("%d",fin[i]);
}
}
return 0;
}
...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-05-06
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char a1[MAXLEN];
char a2[MAXLEN];
static int v1[MAXLEN];
static int v2[MAXLEN];
static int v3[MAXLEN];
int i,j,n,L,z;
void main(void) {
    scanf("%d",&n);
    for (j=0;j<n;j++) {
        scanf("%s%s",a1,a2);

        L=strlen(a1);
        for (i=0;i<L;i++) v1[i]=a1[L-1-i]-'0';

        L=strlen(a2);
        for (i=0;i<L;i++) v2[i]=a2[L-1-i]-'0';

        for (i=0;i<MAXLEN;i++) v3[i]=v1[i]+v2[i];

        for (i=0;i<MAXLEN;i++) {
            if (v3[i]>=10) {
                v3[i+1]+=v3[i]/10;
                v3[i]=v3[i]%10;
            }
        }

        printf("Case %d:\n", j+1);
        printf("%s + %s = ", a1, a2);

        z=0;
        for (i=MAXLEN-1;i>=0;i--) {
            if (z==0) {
                if (v3[i]!=0) {
                    printf("%d",v3[i]);
                    z=1;
                }
            } else {
                printf("%d",v3[i]);
            }
        }
        if (z==0) printf("0");

        printf("\n");
    }
}
//Sample Input
//3
//0 0
//1 2
//112233445566778899 998877665544332211
//
//Sample Output
//Case 1:
//0 + 0 = 0
//Case 2:
//1 + 2 = 3
//Case 3:
//112233445566778899 + 998877665544332211 = 1111111111111111110
fly_dragon_fly 2015-05-06
  • 打赏
  • 举报
回复
看起来上面模拟加法的地方已经错了,假设了两个数位数一致
mewiteor 2015-05-06
  • 打赏
  • 举报
回复
这题数不大,直接读入字符串反转,转int直接加,再反转清前导0即可

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧