O(∩_∩)O~,关于一道面试题的分析与解答
给大家分享一下我第一次参加面试时的一个题目:
问题:对于任意一个正整数 N,按以下操作把它转化为一个单一数字(大于 0 小于 10的数):
把 N 的各位上数字相加,若得到的结果不是一个单一数字,就把结果的各位上的数字相加,
若得到的结果还不是一个一位数,就还把结果的各位上的数字相加,
……
直到结果为一个单一数字为止。
如:2345
2+3+4+5=14
1+4=5 结果就为 5。
请写出一个方法,当传入任意一个正整数时,返回它按以上操作所得到的单一数字。
这个是刚才一个网友贴出来的,我也想了个方法,就是先把数字转换成string,然后再进行出来,总之就是转来转去吧,代码还是比较少的:
#include <iostream>
#include <string>
#include <strstream>
using namespace std;
string get_string(int N)
{
strstream ss;
string s;
ss << N;
ss >> s;
return s;
}
int main()
{
int N;
cout << "please input the integral number N : ";
cin >> N;
do
{
string s = get_string(N);
int sum = 0;
for (size_t i = 0; i < s.size(); ++i)
{
sum += s[i]-'0';
}
N = sum;
} while (N >= 10);
cout << N << endl;
}

浙公网安备 33010602011771号