zoj 1115 Digital Roots

求各数位之和;
运用弃九法可以很快解出,但一开始没想到出入的会是字符串,WA了几次,
AC代码如下

#include"iostream"
#include"string"
using namespace std;
int main()
{
	string str;
	
	while(cin>>str,str!="0")
	{
		int n=0;
		for(string::size_type i=0;i!=str.size();i++)
			n+=str[i]-'0';
		n%=9;
		if(n==0) n=9;
		cout<<n<<endl;
	}
	return 0;
}

弃九法的扩展应用
k是n进制下的一个数,s是k各位数字之和,则存在k%(n-1)=s%(n-1);
利用同余的原理证明。
posted @ 2011-04-30 16:10  Ac_smile  阅读(242)  评论(0编辑  收藏  举报