當前位置:首頁 » 編程語言 » 杭電刷題1001題C語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

杭電刷題1001題C語言

發布時間: 2022-11-06 08:06:12

① 杭電acm的1001題,求和的那個,我的代碼在自己的軟體上運行成功了,為啥出現了wrong answer

#include<stdio.h>
int main()
{
int n,sum;
sum=0;

while(scanf("%d",&n)!=EOF)
{
sum=0;//初始化,不然的話你輸入第二個樣例就不對了。

for(;n>0;n--)
{
sum+=n;
}

printf("%d\n\n",sum);
}
return 0;
}

② 杭電OJ 1001題 用c語言這么寫怎麼不對

你仔細看一下輸入和輸出的要求:
輸入:一系列的n值,每一個是一行
輸出:For each case, output SUM(n) in one line

例子中,
第一個輸入是1,輸出SUM(1)的結果是1
第二個輸入是100,輸出SUM(100)的結果是5050
當然,你提交程序的測試數據不止這兩個,這里只是舉一個例子,他會有大量測試數據,讓你保證時間和空間復雜度都是符合要求的

還有一點要注意,每兩個輸出的結果中間有一個空行

③ 杭電ACM1001題怎麼就是不對了呢

因為 (1+b) * b 可能大於 32 位,這個要判斷 奇偶的,給個ac 的參考:

#include<stdio.h>

intmain(void)
{
inta;
while(scanf("%d",&a)!=EOF)
printf("%lu ",a%2==0?a/2*(a+1):(1+a)/2*a);
return0;
}

④ 杭電 ACM 1001題

給你改寫了一下。把scanf()放到while裡面。
#include "stdio.h"
#include "conio.h"

main()
{
int a , i , sum=0 ;
while(1)
{

scanf("%d",&a);
if(a==EOF)
{
break;
}
else
{
for (i=0 ; i<=a ; i++)
{
sum=sum+i ;
}
printf ("%d\n",sum);
}
}
getch();
}

運行測試:
4回車
10
5回車
25
6回車
46

⑤ c語言 acm求助 杭電 1002 代碼如下:

這是我的代碼,0MS過的,這是個大數問題,這個題是加強版,要的數更大,所以就不能一個數組里存一個數,把一個數組里存多個數,但是數的輸出牽扯到一個問題,比如你一個數組里存一個5位書,其中a[9]=12345,a[10]=102,所以輸出的時候是 12345102,而正確的應該是1234500102,注意這點。

#include<stdio.h>
#include<string.h>
int main()
{
int a[1005],b[1005],c[1005];
char z;
int i,j,k,t,x,y;
scanf("%d",&t);
z=getchar();
for(i=1;i<=t;i++)
{
memset(c,0,sizeof(c));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(j=0;;j++)
{
z=getchar();
if(z==' ')
break;
a[j]=z-48;
x=j;
}
j--;
for(k=1000;j>=0;k--,j--)
{
a[k]=a[j];
a[j]=0;
}
for(j=0;;j++)
{
z=getchar();
if(z=='\n')
break;
b[j]=z-48;
y=j;
}
j--;
for(k=1000;j>=0;k--,j--)
{
b[k]=b[j];
b[j]=0;
}
for(j=1000;j>=0;j--)
{
c[j]+=a[j]+b[j];
c[j-1]+=(c[j]/10);
c[j]=c[j]%10;
}
printf("Case %d:\n",i);
for(j=0;j<=1000;j++)
{
if(a[j]!=0)
{
for(k=j;k<=1000;k++)
{
printf("%d",a[k]);
}
break;
}
}
printf(" + ");
for(j=0;j<=1000;j++)
{
if(b[j]!=0)
{
for(k=j;k<=1000;k++)
{
printf("%d",b[k]);
}
break;
}
}
printf(" = ");
for(j=0;j<=1000;j++)
{
if(c[j]!=0)
{
for(k=j;k<=1000;k++)
{
printf("%d",c[k]);
}
break;
}
}
if(i!=t)
printf("\n");
printf("\n");
}
return 0;
}

這是我的代碼,0MS過的,這是個大數問題,這個題是加強版,要的數更大,所以就不能一個數組里存一個數,把一個數組里存多個數,但是數的輸出牽扯到一個問題,比如你一個數組里存一個5位書,其中a[9]=12345,a[10]=102,所以輸出的時候是 12345102,而正確的應該是1234500102,注意這點。

⑥ 杭電acm1002題C語言答案是什麼求高手!

額。。。。。。
1.。。。。scanf("%c",a);輸入一個字元???改成%s騷年。。。

2。。。。。for(i=0;i<=101;i++)題目沒有說輸入的沒個數都是101位吧。。如果輸入的數沒有101位你的c[i]=a[i]+b[i]-96; c[i]系統會給你隨機數的。。。。
3。。。。加法是從個位開始加的吧,你的a[0]、b[0]應該是輸入數的最高位吧,怎麼是他們相加往c[1]進位????。。。。。。

問下你的:::驗證的沒有錯誤,可就是執行不了;是什麼意思

順帶說下樓上的應該讀下題目:Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.

⑦ 杭電1002 c語言

#include <stdio.h>
#include <string.h>
main()
{
char str1[1001],str2[1001];
int t,i,len_str1,len_str2,len_max,num=1,k;
scanf("%d",&t);
getchar();
while(t--)
{
int a[1001]={0},b[1001]={0},c[1001]={0};
scanf("%s",str1);
len_str1=strlen(str1);
for(i=0;i<=len_str1-1;i++)
a[i]=str1[len_str1-1]-'0';//明顯這個for循環的作用只是把最後輸入的那個字元以ANSIC碼的形式賦值給了a[i],其他什麼操作都沒做,這里len_str1-1應該改成i。
scanf("%s",str2);
len_str2=strlen(str2);
for(i=0;i<=len_str2-1;i++)
b[i]=str2[len_str2-1]-'0';//問題同上,也改成i。
if(len_str1>=len_str2)len_max=len_str1;
else len_max=len_str2;
k=0;
for(i=0;i<=len_max-1;i++)
{
c[i]=(a[i]+b[i]+k)%10;
k=(a[i]+b[i]+k)/10;
}
if(k!=0)c[len_max]=1;
printf("Case%d:\n",num); num++;
printf("%s+%s=",str1,str2);
if(c[len_max]=1)printf("1");
for(i=len_max-1;i>=0;i--)printf("%d",c[i]);
printf("\n");
if(t>=1)printf("\n");
}
}

⑧ 杭電1001

不需要把所有數都讀取以後再輸出