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

  • 相关阅读:
    Dictionaries and lists
    Looping and dictionaries
    Dictionary as a set of counters
    Dictionaries
    List exercise
    Lists and strings
    Copying lists
    Objects and values
    [luoguP1944] 最长括号匹配_NOI导刊2009提高(1)
    [luoguP1868] 饥饿的奶牛(DP)
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/1976896.html
Copyright © 2020-2023  润新知