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. //这是别人写的 定义了一个函数 看起来简洁多了  比我的好得多 

  

#include <stdio.h>    
int mod(int n , int b){  
    int sum = 0;  
    while(n){  
            sum += n%b;  
            n /= b;  
        }  
    return sum;  
}  
int main(){  
    int i ;  
    for(i = 2992 ; i <= 9999 ; ++i){  
    if(mod(i,10) == mod(i,12) &&mod(i,10) == mod(i,16)){  
            printf("%d\n",i);  
        }  
    }  return 0;
}  


//还有三个while 循环的
#include <stdio.h>
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;
}

 

  1. //一个C++的 大同小异
#include <iostream>
using namespace std;
int s(int i,int n)//i为数,而n为进制。。。
{
    int sum=0;    
    while((i-i%n)/n)
    {
        sum+=i%n;
        i=(i-i%n)/n;
    }
    sum+=i%n;    
    return sum;
}
int main()
{
    for(int i=1000; i<=9999; i++)
    {    
        if( s(i,16)==s(i,12) && s(i,16)==s(i,10) )
        {
            cout<<i<<endl;
        }
    }
    return 0;
}

 

posted @ 2018-01-17 15:07  163467  阅读(411)  评论(0编辑  收藏  举报