hdu 1197 水题 但是英文题目真的很艰难 忍不住还是用了翻译

  1. //题目的难度是读题233333 题意:输出所有四位数 满足十进制各位数字之和等于十二进制 等于十六进制的 顺便换个行
  2. //这是我写的  很丑 对吧
  3. #include <stdio.h>

    int main()
    {
    int n,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4;
    for(int i=1000;i<=9999;i++)
    {
    a1=i/1000;a2=i/100%10;a3=i/10%10;a4=i%10;
    b1=i/1728;b2=i/144%12;b3=i/12%12;b4=i%12;
    c1=i/4096;c2=i/256%16;c3=i/16%16;c4=i%16;
    if((a1+a2+a3+a4)==(b1+b2+b3+b4) && (b1+b2+b3+b4)==(c1+c2+c3+c4))
    // 十进制等于十六进制 等于十二进制的各位数字之和
    printf("%d\n",i);
    }
    return 0;
    }

  4. //这是别人写的 定义了一个函数 看起来简洁多了  比我的好得多 
  1. #include <stdio.h>    
  2. int mod(int n , int b){  
  3.     int sum = 0;  
  4.     while(n){  
  5.         sum += n%b;  
  6.         n /= b;  
  7.     }  
  8.     return sum;  
  9. }  
  10. int main(){  
  11.     int i ;  
  12.     for(i = 2992 ; i <= 9999 ; ++i){  
  13.         if(mod(i,10) == mod(i,12) &&mod(i,10) == mod(i,16)){  
  14.             printf("%d\n",i);  
  15.         }  
  16.     }  
  17. }  
  18. //还有三个while 循环的
  19. #include <stdio.h>
  20. int main()
    {
        for(int i=2992;i<=9999;i++)
        {
            int n=i;
            int k=i;
            int m=i;
            int ans=0,pos=0,cnt=0;
            while(n)
            {
                ans+=n%10;
                n/=10;
            }
            while(m>=12)
            {
                cnt+=m%12;
                m/=12;
            }
            cnt+=m;//最后一次的余数 需要加上
            while(k>=16)
            {
                pos+=k%16;
                k/=16;
            }
            pos+=k;
            if(pos==ans && ans==cnt) printf("%d\n",i);
        }
        return 0;
    }
  21. //一个C++的 大同小异
    1. #include <iostream>
    2. using namespace std;
    3. int s(int i,int n)//i为数,而n为进制。。。
    4. {
    5.     int sum=0;    
    6.     while((i-i%n)/n)
    7.     {
    8.         sum+=i%n;
    9.         i=(i-i%n)/n;
    10.     }
    11.     sum+=i%n;    
    12.     return sum;
    13. }
    14. int main()
    15. {
    16.     for(int i=1000; i<=9999; i++)
    17.     {    
    18.         if( s(i,16)==s(i,12) && s(i,16)==s(i,10) )
    19.         {
    20.             cout<<i<<endl;
    21.         }
    22.     }

             }

转载于:https://www.cnblogs.com/163467wyj/p/8302987.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值