zoukankan      html  css  js  c++  java
  • PAT 2-06. 数列求和(20)

    题目意思:给定某数字A(1<=A<=9)以及非负整数N(0<=N<=100000),求数列之和S = A + AA + AAA + … + AA…A(N个A)

    最开始一想还以为是大数相加,但是想了一下,感觉有规律。

    解题思路:n个a相加除以10的余数为当前位的结果,商为新的进位 ,由此可以得到结果的每一位

    代码如下(带注释):

    #include<iostream>
    using namespace std;
    int a,n;
    int sum[100005],k=0;//sum逆序存结果的每一位 
    int main()
    {	
    	cin>>a>>n;
    	if(n==0)
    	{
    		cout<<0<<endl;
    		return 0;
    	}
    	int c=0;//c为进位 
    	for(int i=n;i>=1;i--)
    	{
    		c+=i*a;
    		sum[k++]=c%10;//i个a相加除以10的余数为当前位的结果 
    		c=c/10;//商为新的进位 
    	}
    	if(c!=0)//c为0时不输出最高进位c 
    	{
    		cout<<c;
    	}
    	for(int i=k-1;i>=0;i--)//逆序输出 
    	{
    		cout<<sum[i];
    	}
    	cout<<endl;
    	return 0;
    }
    

      

  • 相关阅读:
    RHEL7管道与重定向
    RHEL7软件包管理
    RHEL7用户管理
    RHEL7文件管理
    RHEL7文件查找
    RHEL7文件权限
    RHEL7文件归档与压缩
    RHEL7进程管理
    博客园样式美化
    flask+python页面修改密码功能
  • 原文地址:https://www.cnblogs.com/CHLL55/p/4326485.html
Copyright © 2011-2022 走看看