hdu 1197 水题 但是英文题目真的很艰难 忍不住还是用了翻译
- //题目的难度是读题233333 题意:输出所有四位数 满足十进制各位数字之和等于十二进制 等于十六进制的 顺便换个行
- //这是我写的 很丑 对吧
-
#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; }
- //这是别人写的 定义了一个函数 看起来简洁多了 比我的好得多
#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; }
- //一个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; }