zoukankan      html  css  js  c++  java
  • 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;
        
    }
    

  • 相关阅读:
    一往直前!贪心法
    Longest subarray of target sum
    动态规划-最长公共子序列/最长公共子串
    Short Encoding of Words
    Spiral Matrix
    Longest Repeating Character Replacement
    伤怀之美
    宁静是一种生产力
    POJ 2524 Ubiquitous Religions 【并查集】
    POJ 1611 The Suspects【并查集】
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/1976896.html
Copyright © 2011-2022 走看看