杭電 1002 ACM 除錯都出錯。

2025-01-14 11:10:25 字數 3112 閱讀 1505

1樓:網友

大整數加法。

沒明白你的 scanf("%d %d",&a,&b);是什麼意思。

我的**,可以通過。

#include

#include

char a1[1001], a2[1001];

int sum[1002];

大整數相加,並返回結果位數。

int largeadd(char a1,char a2,int len1, int len2)

先相加,再處理進位,res裡是先低位再高位。

a1長度比a2更長。

int i = len1-1, j = len2-1, k = 0;

while(j >=0)

sum[k++]a1[i--]0') a2[j--]0');

while(i >=0)

sum[k++]a1[i--]0';

從低位到高位處理進位。

for (int t = 0; t < k; t++)if(sum[t] >10)

sum[t] -10;

sum[t+1]++

if (sum[k] !0)

return k+1;

elsereturn k;

int main()

int n, cas = 1, len1, len2, len3;

scanf("%d", n);

while(cas <=n)

memset(a1, 0, sizeof(a1));

memset(a2, 0, sizeof(a2));

memset(sum, 0, sizeof(sum));

scanf("%s %s", a1, a2);

printf("case %d:%s + s = cas++,a1, a2);

len1 = strlen(a1);

len2 = strlen(a2);

len1 >=len2 ? len3 = largeadd(a1, a2, len1, len2) :len3 = largeadd(a2, a1, len2, len1);

for (int i = len3-1; i >=0; i--)printf("%d", sum[i]);

printf("");

if(cas <=n)

printf("");

return 0;

2樓:網友

#include

#include

int main()

int n,ca,i,j;

int length1,length2,length3;

char a[1001],b[1001];

scanf("%d",&n);

ca = 1; /這個要在外面初始化,不然一直輸出case 1:

while(n--)

scanf("%s %s",a,b); 要用%s輸入字串。

char sum[1001];

sum[0]='0';

length1=strlen(a);

length2=strlen(b);

length3=length1>length2?length1:length2;

if(length1>=length2)

for(i=length1-1,j=length2-1;j>=0;j--,i--)

sum[i+1]=(a[i]-'0')+b[j]-'0');把能對齊的部分先相加,如1234 和56,就先加低2位,4+6,3+5,儲存為8,10

for(i;i>=0;i--)

sum[i+1]=a[i]-'0';/多出的高位就是和,就是1,2

length3=length1;

else if(length1=0;j--,i--)

sum[i+1]=(a[j]-'0')+b[i]-'0');

for(i;i>=0;i--)

sum[i+1]=b[i]-'0';

length3=length2;

for(i=length3;i>0;i--)處理進位。

if(sum[i]>=10)

sum[i-1]=sum[i-1]+sum[i]/10;sum[i]=sum[i]%10;}

printf("case %d:",ca++)這裡你的格式和acm題中的不同。

printf("%s + s = a,b);/這裡的格式有空格。

if(sum[0]!=0') printf("%c",sum[0]);處理最高位是否有進位。

for(i=1;i<=length3;i++)

printf("%d",sum[i]);

printf("");

if(n!=0) printf("");

return 0;

做acm題,遇到格式問題的時候,最好的辦法就是複製。

建議自己再寫一遍該**。 ^

杭電acm1030,求解題思路?

3樓:網友

剛在別人那看到這個題。寫了點思路,複製給你吧。

已經知道了起點m和終點n,現在就是要找到乙個通用的規律讓m儘快到達n。

由圖形中可以看出,假設乙個起點是處於三角形的頂部,比如1,2,4,5,7,9...

那麼它到它下面某一層的點的距離都是一樣的,比如1到2和1到4。比如2到10和2到12和2到14。等等。

根據這個規律我們可以想到,如果n是在m為頂點的三角形的下面,那麼只要找出之間隔了有多少層,問題就解決了。

如果m不是三角形的頂點,我們可以找到m所在的最小的三角形,比如6就是2,8就是4,13就是7...

如何判斷是否在某點下面,首先終點n的值我們是知道的,我們可以算出它所在的層數。

那麼m和n之間的層數差我們就知道了,我們可以算出頂點的左右邊界,如何加以判斷。

在的話,規律很好找。不在的話,在左右邊界中找到n最近的邊界點,算出差值,就是額外的步數,再加上到這一層的步數。

找規律的話,假設頂點f(x)在第x層,那麼它到下一層x+1層的右邊界就是 f(x)+2*x-1 左邊界就是f(x)+2x+1,依次類推,每隔一層頂點到邊界的步數就加2。

當然你也可以找通用表示式,這個事情我就不做了。

純手打,可能沒表達清楚,可以一起**。

杭電1002求救,執行完全正確,按要求做的,提交時提示Co

你用g 提交試試,不過你的 還有其它問題。給你個ac了的 include include using namespace std string add string a,string b if g return a int main return 0 杭電acm2014的c語言問題,為什麼提交了卻是...

杭電與桂電,杭電和桂電差距為什麼這麼大?

除了地理優勢外沒什麼優勢 .全國大學生電子設計競賽獲獎情況桂電強點 杭電才個一等獎 全國多名 桂電乙個最高獎索尼杯個一等獎 全國第五。.地理位置,杭州是省會,位於東部沿海地區,繁華,交通方便。桂林是中等城市,地處廣西,著名的旅遊城市,雖然交通也比較方便,火車站機場都有。但確實無法和杭州相比。.文化氛...

杭電2019哪裡錯了,杭電2054哪裡錯了

兩個地方,陣列不夠大,結尾小數點要去掉,但是超時了,ac的 在最後 include include char fun char s int main b 100000 陣列開大while scanf s s a,b return 0 char fun char s if f 去掉尾部的0 if s ...