博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浙江大学PAT上机题解析之2-06. 数列求和
阅读量:5165 次
发布时间:2019-06-13

本文共 1471 字,大约阅读时间需要 4 分钟。

给定某数字A(1<=A<=9)以及非负整数N(0<=N<=100000),求数列之和S = A + AA + AAA + … + AA…A(N个A)。例如A=1, N=3时,S = 1 + 11 + 111 = 123。

输入格式说明:

输入数字A与非负整数N。

输出格式说明:

输出其N项数列之和S的值。

样例输入与输出:

 

序号
输入
输出
1
1 3
123
2
6 100
7407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407340
3
1 0
0

第一种方法(未通过,最后一个case一直超时)

 

#include 
#include
#include
using namespace std;inline string ADD(string a,string b){ string c; string::reverse_iterator it1,it2 ; int val,val1,val2; int up=0;//进位 int i=0; for (it1=a.rbegin(),it2=b.rbegin();it1!=a.rend()&&it2!=b.rend();it1++,it2++) { val1 = *it1-'0'; val2 = *it2-'0'; val = (val1+val2+up)%10; c.push_back(val+'0'); up = (val1+val2+up)/10; } if (it1==a.rend()) { while(it2!=b.rend()) { val2 = *it2-'0'; val = (val2 +up)%10; c.push_back(val+'0'); up = (val2+up)/10; it2++; } } if (it2==b.rend()) { while(it1!=a.rend()) { val1 = *it1-'0'; val = (val1 +up)%10; c.push_back(val+'0'); up = (val1+up)/10; it1++; } } reverse(c.begin(),c.end()); return c;}int main(){ string Sn; string temp; int A,N; cin>>A>>N; if (N==0) { cout<<"0"<

第二种方法,已通过,是不是很简洁呢,嘿嘿

AAAA

   AAA

      AA

         A

请这么看求和,对应相加,是不是就是A*N+mod呢,mod为进位,N自减,请务必注意最后一次mod若不为零,则还要将mod加进去,附代码如下:

#include 
#include
#include
using namespace std;int main(){ string temp; int A,N; cin>>A>>N; if (N==0) { cout<<"0"<

 

 

 

 

 

转载于:https://www.cnblogs.com/ainima/p/6331256.html

你可能感兴趣的文章
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>
js深度克隆对象、数组
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>