7508 密码

这是一个关于解密7508密码的编程问题,要求在限制时间内计算两个大数的和。题目中给出了示例输入和输出,并对数据范围进行了说明。解决方案是将大数作为字符串处理,使用数组跟踪进位情况。
摘要由CSDN通过智能技术生成

7508 密码

题目链接:http://acm.ocrosoft.com/problem.php?cid=2286&pid=7
题目描述
在浩浩茫茫的苍穹深处,住着玉帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏。今天他们正在观赏大地风光人情之际,忽然从遥远的东海之滨传来一阵欢笑声,玉帝纵目望去,只见镇海中学内聚集了全宁波的中小学精英学生,他们要干什么呢?

原来他们都在做一种破译密码的游戏,人们发现:一根密码棒上的数字加上另一根密码棒上的数字,就是开启天庭司粮库密码锁的的密码。

如:1233+67122=68355,则68355就是一组有效的密码。

"太简单了!"人们高呼起来,继续探索着。

"这不过是早期的密码系统而已。"玉帝轻蔑地环顾神仆们说道。

可是,当人们演算了 139513+3344=142857 后,玉帝的神色愈来愈不对了,要知道,142857是一个特别的数字,这可是天庭的机密,是谁将这些机密泄露给世人的呢?

于是,玉帝搬出一张牌,对司粮库主管神农氏说:“将这张牌打出去,看看他们还逞能不?”

这是天庭中一张王牌,但平凡得很,只不过将密码的位数增大到不超过200位而已,可是难就难在你看到文件:mima.in中的两个数后,必须在1秒钟内将密码输出到文件:mima.out中,否则这组密码就失效了。

玉帝还算是仁慈的,没有将更难的牌打出来,他想把天庭的粮食恩赐人间,但他绝不会给那些不动脑子的人。

现在请你解开天庭司粮库密码锁的密码,帮助人们获得天庭恩赐的粮食。
输入
共有两行,每行一个正整数。
输出
只有一行,该行只有一个正整数,为输入的两个正整数之和。
样例输入
1233
67122
样例输出
68355
提示

30%的数据:结果的值<2×10^9。

50%的数据:结果的值<1×10^16。

100%的数据:结果的值<1×10^200。

思路

其实说了这么多就是算两个数相加。值比较大,我们用字符串相加。用个数组记录下进位情况就好了。

#include<bits/stdc++.h>
#include<string>
using namespace std;
typedef long long ll;
const int  mod=998244353;
const int N=2e2+10;
string a,b;
int l1,l2,vis[N],c[N],len;//vis记录当前位置有没有进位,c存储加起来的数,len记录加起来的长度 
void add(){
 int x,y;//记录两字符串相同位置上的数字 
  len=max(l1,l2);
 for(int i=0;i<len;i++){
 	if(i>=l1)
 	x=0;
 	else
 	x=a[l1-i-1]-'0';
 	if(i>=l2)
 	y=0;
 	else
     y=b[l2-i-1]-'0';
 	if(vis[i]+x+y>=10){//出现进位 
 	c[i]=x+y+vis[i]-10;
 	vis[i+1]=1;
 	}
 	else c[i]=x+y+vis[i];
 }
 if(vis[len])c[len]=1,len++;
}
int main(){
 cin>>a>>b;
 l1=a.length();
 l2=b.length();
 add();
 for(int i=len-1;i>=0;i--)
 cout<<c[i];
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值