P8771题解
这是一道提交答案题,一共两道试题,还是比较简单的。
试题A 九进制转十进制
此题利用进制转换公式即可。
从右到左用九进制的每个数位去乘以
那么此题的
那么转换公式就是:
具体的代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n=2022,ge,shi,bai,qian,sum;
ge=n%10;
shi=n%100/10;
bai=n/100%10;
qian=n/1000;
sum=qian*(pow(9,3))+bai*(pow(9,2))+shi*(pow(9,1))+ge*(pow(9,0));//进制转换公式
cout<<qian*(pow(9,3))<<"+"<<bai*(pow(9,2))<<"+"<<shi*(pow(9,1))<<"+"<<ge*(pow(9,0))<<"="<<sum<<endl;
return 0;
}
试题B 顺子日期
此题需要枚举在
分析
- 由于前四位数字是年份,不用考虑前三位,所以最后只需判断
4,5,6,7,8 位手动枚举
-
枚举
4 ,5 ,6 位第
4 位是2 ,能组成的顺子只有2,3,4 。但是第五位是3 ,没有3 为十位开头的月份,所以排除。 -
枚举
5 ,6 ,7 位第
5 位只可以填0 和1 。- 先从
0 开始枚举:
可填的顺子是
0,1,2 ,后面的第8 位可以随便填(0 ~9 ),共十个。- 枚举是
1 的:
可填的顺子是
1,2,3 ,由于第5,6 位是1 和2 (表示12 月),第7 位是3 ,后面的第8 位只能填0 和1 (表示30 和31 日),共两个。共计十二个
- 先从
-
枚举
6 ,7 ,8 位枚举后发现有三种:
0123 、1012 和1123 。但是
0123 与前面重复了,所以删去。共计两种