- NOIP2025濮阳市第一高级中学信奥第一次测试20241111
笑点解析:《随便写写》写了个600pt
- 2024-11-12 13:16:37 @
这几道题真是太简单了,根本没有难度。 第一题 首先先说第一题生日游戏,没给数据范围,很容易想到while循环判断,所以一直循环求和,但是ans刚开始就是小于十的,所以外层while(1),难度2,代码:
#include<bits/stdc++.h>
using namespace std;
int ad(int& x){
int ad=0;
while(x){
ad+=x%10;
x/=10;
}
return ad;
}
int main(){
int y,m,d,n,ans;
cin>>y>>m>>d;
n=n+ad(y)+ad(m)+ad(d);
while(1){
ans+=ad(n);
if(ans<10) break;
n=ans;
ans=0;
}
cout<<ans<<endl;
return 0;
}
第二题 数字翻译,写个string数组,首先判断是否只有个位,再判断是否整十,然后输出就行啦,难度2,代码:
#include<bits/stdc++.h>
using namespace std;
string a[11]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu","shi"};
int main(){
int n;
cin>>n;
if(n<10) cout<<a[n];
else{
if(n%10==0) cout<<a[n/10]<<" "<<a[10];
else cout<<a[n/10]<<" "<<a[10]<<" "<<a[n%10];
}
return 0;
}
第三题 三角形,很简单,不想说了(,看注释,难度2,代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[2];
cin>>a[0]>>a[1]>>a[2];
sort(a,a+2);//懒得排序了(
if(a[0]+a[1]<=a[2])/*三角形判断,a-b<c<a+b*/{
cout<<"error!"<<endl;
return 0;//不想到时候写错了去对else匹配了(
}
if(a[0]*a[0]+a[1]*a[1]==a[2]*a[2]){
cout<<"zj"<<endl;
return 0;
}
if(a[0]==a[1] && a[1]==a[2]){
cout<<"db"<<endl;//等边三角形必须在等腰三角形前
return 0;
}
if(a[0]==a[1] || a[1]==a[2]){
cout<<"dy"<<endl;
return 0;
}
cout<<"yb"<<endl;//确实比较屎(
return 0;
}
第四题 银行取钱,只需要while来回求差就可以了,难度1,代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,ans=0;
cin>>n;
while(n>0){
n-=3000;//题目描述“超过”后多了一个“多”所以刚开始没看懂
ans++;
}
cout<<ans<<endl;
return 0;
}
第五题 余数问题,取余判断就可以啦,可以先判断-1,也可以最后判断,难度1,代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
if(n%3!=0&&n%5!=0&&n%7!=0){
cout<<-1<<endl;
return 0;
}
if(n%3==0) cout<<3<<" ";
if(n%5==0) cout<<5<<" ";
if(n%7==0) cout<<7<<" ";
cout<<endl;
return 0;
}
第六题 余数问题,这个得想一下,分讨照亮世界,写了It was(,难度3,代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[4],b[4],n;
cin>>n;
int x=n;
if(n%100==0){
cout<<0<<endl;
return 0;
}
for(int i=0;i<3;i++){
a[i]=x%10;
x/=10;
}
x=n;
for(int i=2;i>=0;i--){
b[i]=x%10;
x/=10;
}
sort(a,a+3);
if(a[0]==0){
if((n-a[2])%100==0) cout<<0<<endl;
else cout<<1<<endl;
return 0;
}
if(a[1]==b[1]&&a[2]==b[2]&&a[0]==b[0]) cout<<0<<endl;
else if(a[1]==b[1]||a[2]==b[2]||a[0]==b[0]) cout<<1<<endl;
else if(a[1]!=b[1]&&a[2]!=b[2]&&a[0]!=b[0]) cout<<2<<endl;
return 0;
}
0 条评论
目前还没有评论...