一道pascal问题,还有一个地方不对,应该怎么改正?
正整数里面的每位数字相乘,比如:6593。将这个整数中的各位数字全部取出,将他们相乘,得到一个新的整数,上面的例子就是6*5*9*3=810,然后继续做下去,8*1*0*...
正整数里面的每位数字相乘,比如:6593。将这个整数中的各位数字全部取出,将他们相乘,得到一个新的整数,上面的例子就是6*5*9*3=810,然后继续做下去,8*1*0*=0得到了一个个位数0。
问最后剩下的个位数字是几?
输入:
98886
输出:
0 注意这个数的位数(2<=l<=100)!
var
s:string;
function multi(s:string):string;
var
t:qword;
i:longint;
begin
t:=1;
for i:=1 to length(s) do
begin
if s[i]<>'0' then t:=t*(ord(s[i])-48);
end;
str(t,multi);
end;
begin
readln(s);
while length(s)<>1 do s:=multi(s);
writeln(s);
end.
这道题方法我觉得很好,但是当这个s的位数乘起来之后大于了qword的范围了那应该怎么办啊?可以用string来解决吗? 展开
问最后剩下的个位数字是几?
输入:
98886
输出:
0 注意这个数的位数(2<=l<=100)!
var
s:string;
function multi(s:string):string;
var
t:qword;
i:longint;
begin
t:=1;
for i:=1 to length(s) do
begin
if s[i]<>'0' then t:=t*(ord(s[i])-48);
end;
str(t,multi);
end;
begin
readln(s);
while length(s)<>1 do s:=multi(s);
writeln(s);
end.
这道题方法我觉得很好,但是当这个s的位数乘起来之后大于了qword的范围了那应该怎么办啊?可以用string来解决吗? 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏30(财富值+成长值)
展开全部
LZ你好,又是我。
在算法竞赛中,凡是涉及个位数的题目,都应该考虑:会不会爆数据类型!能不能只算个位数字!通常都是:会啊!能啊!
你能将每次乘法得出的结果对10取模,只留下个位数字就行了。如果要程序可以追问(写pascal真的不太习惯……)
在算法竞赛中,凡是涉及个位数的题目,都应该考虑:会不会爆数据类型!能不能只算个位数字!通常都是:会啊!能啊!
你能将每次乘法得出的结果对10取模,只留下个位数字就行了。如果要程序可以追问(写pascal真的不太习惯……)
更多追问追答
追问
mod 10???这样不会错吗?
追答
噢噢我看错题了
请问具体数据规模,你说的2<=l<=100是指输入数据还是求得的乘积?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询