题目
解决代码及点评该题目与水仙花数类似,只是条件不同,循环还是一样的
- <pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"></pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code">/************************************************************************/
- /*
- 13. 一个数恰好等于它的平方数的右端,这个数称为同构数。
- 如 5 的平方是25, 5是25中的右端的数, 5就是同构数。找出1~1000之间的全部同构数。
-
- */
- /************************************************************************/
-
- /************************************************************************/
-
- #include <stdio.h>
- #include <stdlib.h></pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"></pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code">// 该函数计算num在十进制时有多少位,比如25是两位
- int f4131(int num)
- {
- int count=0;
- while(num)
- {
- count++;
- num/=10;
- }
- return count;
- }</pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"></pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code">// 判断是否同构数
- bool f4132(int num)
- {
- int n=f4131(num);
- int times=1;</pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"> // 该循环找出应该对多少取模才能算出右边的值
- for(int i=0;i<n;i++)
- {
- times*=10;
- }</pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"> // 进行同构数判断
- if ((num*num)%times==num)
- {
- return true;
- }
- else return false;
-
- }
- void main()
- {
-
- for(int i=1;i<=1000;i++) // 遍历1到1000
- {
- if (f4132(i)) // 判断该数是否同构数,如果是,则打印
- {
- printf("%4d",i);
- }
-
- }
- system("pause");
- }</pre><br></pre><br><br></pre>
|