水題一道·····純粹拿來練手的。昨天經過接近28個小時的顛簸終於人模狗樣的到家了。晚上美美的睡了一覺。早上習慣性的又醒了(6點多啊,多悲劇····)今天就忙着扯網線,弄無線路由。下午開始過以前那種喫飯靠喊,睡覺沒人管的日子了。下午開始調整狀態,刷出來了一道水題。很是坑人的一道題。竟然用到大數加法,最後還有陷阱·····具體的看註釋吧,我就不寫思路了。
原題地址:點擊打開鏈接。
代碼如下:
#include <stdio.h>
#include <string.h>
int main()
{
int i,j,len1,len2,up,len,k,l,n,m,c[1000],d[1000];
char a[1000],b[1000];
scanf("%d",&n);
while(n--)
{
memset(d,0,sizeof(d));
memset(c,0,sizeof(c));
scanf("%s %s",a,b);
len1=strlen(a);
len2=strlen(b);
len=len1>len2?len1:len2;//找到最高位數
for(i=0;i<len1;i++)
c[i]=a[i]-'0';
for(j=0;j<len2;j++)
d[j]=b[j]-'0';
for(i=0,up=0;i<=len;i++)//此乃大數加法的模版,甚是鄙視某人,坑人···
{
c[i]=c[i]+d[i]+up;
up=c[i]/10;
c[i]%=10;
}
for(i=0;i<=len;i++)//判斷是否前綴0
if(c[i])break;
for(j=i;j<len;j++)
printf("%d",c[j]);
if(c[len]==1)printf("1");//又是陷阱,至於爲什麼,自己悟吧,如果直接告訴你,我心裏多不平衡啊。嘿嘿
printf("\n");
}return 0;
}
其實這個題不值得寫博文,只是想借這個機會發發牢騷,讓你們知道我的近況。今天算是進入狀態吧。嘿嘿,明天開始去各大OJ刷水題,哈哈····別鄙視我,都是你們逼我的···上個星期我應該是刷題最少的人···所以勤奮點,去刷水題,哈哈,嘻唰唰