【C语言及程序设计】项目1-39-3:反序数

问题描述:

(1)输入一个正整数,输出它的反序数(反序数,即将其所有位的数字反过来。例如,123是321的反序数)
(2)求1000000以内的正整数n,要求9n是n的反序数。

 

老师的算法

 1 #include <stdio.h>  
 2 int main()  
 3 {  
 4     int n,m,k;  
 5     for(n=1; n<1000000; n++)  
 6     {  
 7         k=n;  
 8         m=0;  //m将为n的反序数  
 9         while(k>0)  
10         {  
11             m=m*10+k%10;  
12             k=k/10;  
13         }  
14         if(m==9*n)   //n的反序数m等于9n  
15             printf("%d ", n);  
16     }  
17     printf("\n");  
18     return 0;  
19 }  

 

笔者的算法

 1 #include "stdafx.h"
 2 #include <cmath>
 3 
 4 int main()
 5 {
 6     int i,n, m(0), d(0), sum(0);
 7 
 8     //枚举
 9     for (i = 1; i < 1000000; i++)
10     {
11         //初始化
12         n = i;
13         d = 0;
14         sum = 0;
15         //计算位数
16         for (; 1; )
17         {
18             d++;
19             if (n / 10 == 0)
20             {
21                 break;
22             }
23 
24             n /= 10;
25         }
26 
27         //初始化
28         n = i;
29         //计算反序数
30         for (; 1; )
31         {
32             sum += m * pow(10, d);
33             m = n % 10;
34             d--;
35 
36             if (n % 10 == 0 && n<10)
37             {
38                 break;
39             }
40 
41             n /= 10;
42         }
43 
44         if (9 * i == sum)
45         {
46             printf("%d %d %d\n",i,9*i, sum);
47         }
48     }
49 
50     return 0;
51 }

 

感想:

反序数的算法可以记下来,老师的算法很简单高效,但是不是那么容易想起;

 

 

 

 

=

转载于:https://www.cnblogs.com/miyazakehime/p/9139233.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值