算法题3
来源:互联网 发布:模拟鼠标点击软件 编辑:程序博客网 时间:2024/06/07 00:02
题目:
Problem Statement
***Note: Please keep programs under 7000 characters in length. Thank youClass Name: SquareDigitsMethod Name: smallestResultParameters: intReturns: intDefine the function S(x) as the sum of the squares of the digits of x. For example: S(3)=3*3=9 and S(230)=2*2+3*3+0*0=13.Define the set T(x) to be the set of unique numbers that are produced byrepeatedly applying S to x. That is: S(x), S(S(x)), S(S(S(x))), etc... For example, repeatedly applying S to 37:S(37)=3*3+7*7=58. S(58)=5*5+8*8=89.S(89)=145.S(145)=42. S(42)=20.S(20)=4.S(4)=16.S(16)=37. Note this sequence will repeat so we can stop calculating now and: T(37)={58,89,145,42,20,4,16,37}.However, note T(x) may not necessarily contain x. Implement a class SquareDigits, which contains a method smallestResult. Themethod takes an int, n, as a parameter and returns the smallest int, x, suchthat T(x) contains n.The method signature is (be sure your method is public): int smallestResult(int n); TopCoder will ensure n is non-negative and is between 0 and 199 inclusive.Examples:If n=0: S(0) = 0, so T(0)={0}, so the method should return 0.If n=2: T(0) through T(10) do not contain the value 2. If x=11, however:S(11)=1*1+1*1=2, so T(11) contains 2, and the method should return 11.If n=10: T(0) through T(6) do not contain 10. If x=7:S(7)=49.S(49)=97.S(97)=130.S(130)=10.S(10)=1.and it starts to repeat... so T(7) is {49,97,130,10,1}, which contains 10, and the method should return 7.n=1 -> x=1 n=19 -> x=133n=85 -> x=5n=112 -> x=2666
Definition
Class:SquareDigitsMethod:smallestResultParameters:intReturns:intMethod signature:int smallestResult(int param0)(be sure your method is public)This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.
我的解法:
#include<iostream>class SquareDigits{public: SquareDigits(){}; ~SquareDigits(){}; int smallestResult(int param0){ int i; for( i = 0; ;i++){ int iNumber = setList(i); if( isIn(param0,list,iNumber)){ break; } } return i; };private: int bits[4]; int list[200]; int setList(int target){ int _a = s(target); int i = 0; list[i] = _a; while(!isIn(_a = s(_a),list,++i)){ list[i] = _a; } return i; }; int split(int target){ bits[0] = target / 1000; target = target % 1000; bits[1] = target / 100; target = target % 100; bits[2] =target / 10; target = target % 10; bits[3] = target; return 0; }; int s(int target){ split(target); return bits[0] * bits[0] + bits[1] * bits[1] + bits[2] * bits[2] + bits[3] * bits[3]; }; bool isIn(int target,int * start,int length){ bool in = false; int i; for(i = 0; i < length;i++){ if(target == *(start + i)){ in = true; break; } } if(i == length ) in = false; return in; }; };
- 面试算法题3
- 算法题3
- 算法题(3)
- [算法]常见算法题
- 算法题/排序算法
- [算法3]Kmeans算法
- 说说算法题的那些事儿(3)~麻将算法题
- IT面试算法题(3)
- LeetCode 算法刷题(3)
- codewars算法题(3)
- 算法题
- 算法题
- 算法题
- 算法题
- 算法题
- 算法题
- 算法题
- 算法题
- 希尔排序总结
- 闲话喝酒
- HDU 3746 Cyclic Nacklace KMP的性质应用
- 关于权限的数据库设计
- sql server
- 算法题3
- 数据库权限管理设计 .
- 且行且记0313
- 详解SQL Server Profiler分析死锁几大步骤
- 表格一些知识点
- 评价过滤运算符选择对T-SQL执行性能的影响机制
- Linux压缩与解压缩汇总
- ASP.NET中的AJAX应用开发总结
- 编写Java程序来处理字符串中的null域