题目:巨型整数
问题编号:143
题目背景:
Aliya姐姐是众所周知的数学大牛,可是有一天她却被一位超级简单的小学数学题给难住了,恰好她碰到了正在OI路上奋斗的您,她相信聪明的您一定能够做出来..>_<{有奖励的哟}
题目描述:
给定一个任意整数,请您对它作出如下处理,从第1位开始到最后一位,对于第n位的数字将它转化为an*10^l+1-n(l为该数的最大位数)然后将他们累加在一起得到一个新的整数,再请您求出各个位数上的和。{够简单吧~~~}
输入格式
一个任意整数n.对于20%的数据n<=9*10^9对于40%的数据
n<=9*10^200,对于60%的数据n<=9*10^2000,对于100%的数据
n<=9*10^20000
输出格式
输出文件为两行,第一行为处理后得到的新的整数,第二行为所求得的各个位数上的和。
样例输入 2516样例输出
6152
14
看到这道题,以为很难,结果把样例一看完。发现 哎 滚滚长江都是水啊~
怎么说呢 这道题就是让你把一个很长的数字 到过来输出一遍 再把每个数位上的数字相加,注意去掉前导零就是了~
贴一下代码:
Type int=longint;
Var s:ansistring;l,ans:int;
Begin
Readln(s);
L:=length(s);
While(s[l]=’0’)dodec(l);
While(l>0)do
Begin
Write(s[l]);
Inc(ans,ord(s[l])-48);
Dec(l);
End;
Writeln();
Writeln(ans);
End;
Ps:由于第一次没有开ansistring 导致wa掉一次,,为什么每次都要失误一次。。呜呜~