1.找最小数
问题描述:
请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。
请将这个数的十进制形式作为答案提交。
#include <stdio.h>
int main(){
int i;
char ch;
for(i=2023;;i++){
int temp=i;
while(temp!=0){
ch=temp%16+'0';
if(ch<='9')break;
temp=temp/16;
}
if(temp==0)break;
}
printf("%d",i);
return 0;
}
2730
2.求列名
问题描述:
在 Excel 中,列的名称使用英文字母的组合。前 26 列用一个字母,依次为 A 到 Z,接下来 26*26 列使用两个字母的组合,依次为 AA 到 ZZ。
请问第 2022 列的名称是什么?
//等同于求2022的26进制
#include <stdio.h>
int main(){
int num=2022;
int a[5]={
0},i=0;
while(num>0){
a[i++]=num%26;
num/=26;
}
for(int j=i-1;j>=0;j--){
printf("%c",'A'+a[j]-1);
}
return 0;
}
BYT
3.求日期数
问题描述:
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。例如,2022年11月13日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。
请提交满足条件的日期的总数量。
#include <stdio.h>
#include <math.h>
int main(){
int count=0;
int y_sum=0,m_sum=0,d_sum=0;
int y,m,d;
for(y=1900;y<=9999;y++){
int temp1=y;
y_sum=0;
while(temp1>0){
y_sum+=temp1%10;
temp1/=10;
}
for(m=1;m<=12;m++){
int temp2=m;
m_sum=0;
while(temp2>0){
m_sum+=temp2