1 条题解
-
0
解决思路
- 遍历所有四位数:从到逐一检查每个数字。
- 计算十进制数字之和:直接分解数字的各位并求和。
- 转换为十二进制和十六进制:分别计算这两种进制下的数字之和。
- 比较和值:若三种进制下的数字之和均相等,则输出该数字。
解决代码
#include<stdio.h>//十进制转化为十二进制和十六进制 #include<string.h> int TwelveSum(int n){ int a[10],count=0,sum=0; while(n!=0){ a[count++]=n%12; n/=12; } for(int i=0;i<count;i++){ sum+=a[i]; } return sum; } int SixteenSum(int n){ char str[5]; int sum=0; sprintf(str,"%x",n); for(int i=0;i<strlen(str);i++){ if(str[i]>='a'&&str[i]<='z') sum+=str[i]-87; else sum+=str[i]-'0'; } return sum; } int TenSum(int n){ char s[10]; int sum=0; sprintf(s,"%d",n); for(int i=0;i<strlen(s);i++) sum+=s[i]-'0';//0对应的ASCII值为48; return sum ; } int main(){ int sum1,sum2,sum3,num; for(int j=2992;j<10000;j++){ sum1=TwelveSum(j); sum2=SixteenSum(j); sum3=TenSum(j); if(sum1==sum2&&sum1==sum3&&sum2==sum3){ printf("%d\n",j); } } }
- 1
信息
- ID
- 3043
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者