
http://acm.hdu.edu.cn/showproblem.php?pid=1197
#include<cstdio>
#include<iostream>
using namespace std;
int check1(int x)
{
int sum=0;
while(x)
{
sum+=x%10;
x/=10;
}
return sum;
}
int check2(int x)
{
int s[100];
int ans=0;
int sum=0;
while(x)
{
s[ans++]=x%16;
x/=16;
}
for(int i=0;i<ans;i++) sum+=s[i];
return sum;
}
int check3(int x)
{
int s[100];
int ans=0;
int sum=0;
while(x)
{
s[ans++]=x%12;
x/=12;
}
for(int i=0;i<ans;i++) sum+=s[i];
return sum;
}
int main(void)
{
for(int i=1000;i<=9999;i++)
{
if(check1(i)==check2(i)&&check1(i)==check3(i))
cout<<i<<endl;
}
return 0;
}
这段代码实现了一个程序,遍历从1000到9999之间的所有整数,检查它们的每一位数字之和(十进制表示)是否等于其十六进制和十二进制表示的每一位数字之和。如果条件满足,该数字将被打印出来。主要涉及数字转换和位运算。
395

被折叠的 条评论
为什么被折叠?



