我是靠谱客的博主 阔达老鼠,最近开发中收集的这篇文章主要介绍neuq oj 1019: 求和again 并非求和题C++,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1019: 求和again

时间限制: 5 Sec   内存限制: 128 MB
提交: 617   解决: 84
[ 提交][ 状态][ 讨论版]

题目描述

在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("%dn",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;
}

及时转换思路,注意数据超限

最后

以上就是阔达老鼠为你收集整理的neuq oj 1019: 求和again 并非求和题C++的全部内容,希望文章能够帮你解决neuq oj 1019: 求和again 并非求和题C++所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部