- //题目的难度是读题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);
- }
- }
- }
- //还有三个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;
- }
- }
}