第一题,考察双重循环,没什么好说的

参考题解:


#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
	cin>>a>>b;
	for(int i=1;i<=a;i++){
		for(int j=1;j<=b;j++){
			cout<<i<<"-"<<j<<"\n";
		}
	}
  return 0;
}

第二题用数组存储每个数出现多少次

参考题解:

#include<bits/stdc++.h>
using namespace std;
int a,b;
int k[10];
int main(){
	cin>>a;
	while(a--){
		cin>>b;
		k[b]++;
	}
	for(int i=0;i<=9;i++)cout<<k[i]<<" ";
  return 0;
}

第三题,简单的递推

由数学知识可知,f[i]=f[i1]+f[i2]f[i]=f[i-1]+f[i-2] 因为增长很大,所以不知道数据范围的情况下可以开longlonglong long 参考题解:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
int a,b;
int k[45];
signed main(){
	k[1]=1;
	k[2]=1;
	for(int i=3;i<=42;i++){
		k[i]=k[i-1]+k[i-2];
	}
	scanf("%lld",&a);
	printf("%lld",k[a]);
  return 0;
}

第四题,“打擂台”

参考题解:

#include<bits/stdc++.h>
using namespace std;
int minu=214748364,a,b;
int main(){
	cin>>a;
	while(a--){
		cin>>b;
		minu=min(minu,b);
	}
	cout<<minu;
  return 0;
}

第五题对新生略有难度,可以选择开两个数组

第二个数组存储有没有被加过

#include<bits/stdc++.h>
using namespace std;
bool k[10005];
bool d[21000];
int a,b,ans;
int main(){
	cin>>a;
	while(a--){
		cin>>b;
		k[b]=1;
	}
	for(int i=1;i<=10005;i++){
		for(int j=1;j<=10005;j++){
			if(i!=j&&k[i]&&k[j]&&k[i+j]&&d[i+j]==0){
				ans++;
				d[i+j]=1;
			}
		}
	}
	printf("%d",ans);
  return 0;
}

感谢@提供B题,@提供A,C,D,E题。

希望大家能喜欢 CDEZ-OJ

1 comments

  • @ 2025-7-18 8:45:49

    哇!大佬技术力太强啦!

    🤡 2
    👀 1
  • 1