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;
}

AC 记录:https://www.luogu.com.cn/record/62749746

posted @ 2022-01-26 16:43  Shunpower  阅读(50)  评论(0编辑  收藏  举报