UVA12414 Calculating Yuan Fen 题解
思路
题意其它题解已经写得很明确了。
一道简单的模拟,按照题意模拟即可。
首先把字符串转换成一堆数,然后按照题目中的操作一直操作道得到的字符串长度为 \(3\),再检查这个字符串是否为100
。
代码
2.1 将字符串转成数
这一步只在最开始的时候有作用。
string tostr(int t){
string ans="";
while(t!=0){
ans+=t%10+'0';//取新的个位加到字符串里
t/=10;//把这一次的个位抹去
}
reverse(ans.begin(),ans.end());//翻转
return ans;
}
2.2 按题意操作
先用刚刚写的函数把原字符串转成数字串:
for(int i=0;i<t.length();i++){
ans+=tostr(x+(t[i]-'A'));
}
还是按照题意模拟,注意合并的边界要设到字符串长度 \(-2\),否则就会越界。
/*这上面把原字符串转成了数字串存在ans里**/
ans1=ans;
while(ans1.length()>3){
ans1="";
for(int i=0;i<ans.length()-1;i++){//注意边界
ans1+=(ans[i]-'0'+ans[i+1]-'0')%10+'0';
}
ans=ans1;
}
最后直接判定是否符合题目要求的最终得到的三位字符串为100
即可。
if(ans1=="100"){
return true;//以上的东西都是写在bool函数里的,每次传参传入枚举的ST值和原字符串就行。
}
else{
return false;
}