第一题 6
【问题描述】
请问 2023 有多少个约数?即有多少个正整数,使得 2023 是这个正整数的整数倍。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
【解】
#include<iostream>
using namespace std;
int main(){
int ans=0;
for(int i=1; i<=2023; i++){
if(2023%i==0)ans++;
}
cout<<ans;
return 0;
}
最终结果:6
第二题 4186
【问题描述】
请问有多少组整数对 l, r 满足:
1. l 和 r 都介于 0 (含)到 100 (含)之间;
2. r-l >= 10。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
【解】
l 取0,r 可以取10--100,有91个
l 取1,r 可以取11--100,有90个
……
l 取90,r 可以只能100,只有1个
#include<iostream>
using namespace std;
int main(){
int count=0;
for(int l=1;l<=91;l++){
count+=l;
}
cout<<count; ;
return 0;
}
不过本人当时提交的是下面这个样子
#include<iostream>
using namespace std;
int main(){
int l,r,count=0;
for(l=0;l<=90;l++){
r=l+10;
for( ;r<=100;r++){
count++;
}
}
cout<<count; ;
return 0;
}
最终结果:4186
第三题 5503
【问题描述】
只能被 1 和本身整除的数称为质数。
请问在 1 (含)到 1000000 (含)中,有多少个质数的各个数位上的数字之和为 23 。
提示:599 就是这样一个质数,各个数位上的数字之和为 5+9+9=23 。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
【解】逆向思维+求质数法
解法很多关键在于会求质数的方法,本方法虽然有6层循环,但是执行次数与for(i=1; i<=1000000; i++)是一样多的,而且还不用再取各个位上数字了,效率上算并不低。
(PS:填空题,能得到正确答案就行,管它的)
#include<iostream>
#include<math.h>
using namespace std;
int ans=0;
void fun(int x){ //质数判定函数
for(int i=2; i<sqrt(x); i++){
if(x%i==0)return; // 若 x 有约数,打破循环,直接结束函数
}
// cout<<x<<endl;
ans++; //若 x 没有约数,循环正常结束,统计个数 +1
}
int main(){
for(int a=0; a<=9; a++){
for(int b=0; b<=9; b++){
for(int c=0; c<=9; c++){
for(int d=0; d<=9; d++){
for(int e=0; e<=9; e++){
for(int f=0; f<=9; f++){
if(a+b+c+d+e+f==23){
int x=a*100000+b*10000+c*1000+d*100+e*10+f;
fun(x);
}
}
}
}
}
}
}
cout<<"ans="<<ans;
return 0;
}
最终结果:5503
第四题 344
【问题描述】
求 12345678901234567890123456789012345678901234567890 除以 2023 的余数。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
【解】
直接模拟呗
#include<iostream>
using namespace std;
int main(){
string ss="123456789012345678901234