題目描述
在1011題中大家已經解決了谷學長的疑問,成功的使他重新振作起來。不過最近谷學長又遇到了更麻煩的問題,爲了使他不再低迷,你能幫幫他嗎?
題目是這樣的:計算SUM(n) = 1 + 2 + 3 + ... + 10^n。滿足n<=100 000。
輸入
輸入包含多組數據,每組數據一行,包括一個整數n(n<=100 000)。當n=-1時輸入終止。
輸出
對於每個n輸出相應的和。
樣例輸入
1
2
-1
樣例輸出
55
5050
提示
人家……人家真的不是求和題啦 喵~
代碼
#include<iostream>
using namespace std;
int main()
{
int i,n;
while (cin>>n)
{
if(n==-1) return 0;
if(n==0)
{
cout<<"1"<<endl;
//continue;
}
else
{
cout<<"5";
for(i=1;i<n;i++)
{cout<<"0";}
cout<<"5";
for(i=1;i<n;i++)
{cout<<"0";}
cout<<endl;
}
}
return 0;
}
體會:
法一:
#include<math.h>
#include<stdio.h>
int main()
{
int i,n;
long s=0;
while(scanf("%d",&n))
{
if(n==-1||n>100000)
break;
else
{
s=0;
for(i=1;i<=(pow(10,n));i++)
{
s=s+i;
}
printf("%d\n",s);
}
}
return 0;
}
法二:
#include<iostream>
#include<math.h>
#include<stdio.h>
using namespace std;
int main()
{
int i,n;
while (cin>>n)
{
int sum=0;
if(n!=-1&&n<=100000)
{
for(i=1;i<=(pow(10,n));i++)
{
sum=sum+i;
}
cout<<sum<<endl;
}
else
{
return 0;
}
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int i,n;
while (cin>>n)
{
if(n==-1) return 0;
if(n==0)
{
cout<<"1"<<endl;
//continue;
}
else
{
cout<<"5";
for(i=1;i<n;i++)
{cout<<"0";}
cout<<"5";
for(i=1;i<n;i++)
{cout<<"0";}
cout<<endl;
}
}
return 0;
}
及時轉換思路,注意數據超限