等级考试3-2021年12月题目

十二月:

#include <iostream>
using namespace std;
int sum(int);
int main(){
  int n;
  cin>>n;
	for(int i=1;i<100000;i++){
	  for(int j=1;j<=i;j++){
	    if(sum(i)-j*2==n){
	      cout<<j<<' '<<i;
	    	return 0; 
	    }
	  }
	}
	return 0;
}
int sum(int n){
  int sum=0;
  for(int i=1;i<=n;i++){
    sum+=i;
  }
  return sum;
}

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct zc{
  string c;
  int f;
};
bool tmp(zc a,zc b){
  int la=(a.c).length(),lb=(b.c).length();
  int i=0;
  while(i<la&&i<lb){
    if(a.c[i]!=b.c[i]){
      return a.c[i]<b.c[i];
    }
    i++;
  }
  return la<lb;
}
int main(){
	string ip;
	zc cs[100010];
	getline(cin,ip);
	int l=ip.length(),lc=0;
	for(int i=0;i<l;i++){
	  string t="";
	  for(int j=i;j<l;j++){
	    t+=ip[j];
	    bool flag=1;
	    for(int x=0;x<lc;x++){
	      if(cs[x].c==t){
	        cs[x].f++;
	        flag==0;
	        break;
	      }
	    }
	    if(flag){
	      cs[lc].c=t;
	      cs[lc].f=1;
	      lc++;
	    }
	  }
	}
	sort(cs+0,cs+lc,tmp);
	for(int i=0;i<lc;i++){
	  if(cs[i].f>1)cout<<cs[i].c<<' '<<cs[i].f<<endl;
	}
	return 0;
}

#include <iostream>
using namespace std;
int main(){
	int a[30]={1,2},n;
	cin>>n;
	for(int i=2;i<=n;i++)a[i]=a[i-1]+a[i-2];
	cout<<a[n-1];
	return 0;
}

 因代码较为复杂,尚未编写。

#include <iostream>
#include <string>
using namespace std;
int cf(int,int);
string func(int,int);
int main(){
	int a[100],l=0;
	while (1){
		cin>>a[l];
		if(a[l]==-1)break;
		l++;
	}
	for(int i=0;i<l;i++){
		int bc=cf(3,a[i]-1);
		for(int j=0;j<bc;j++){
			cout<<func(a[i],j)<<endl;
		}
		
		cout<<"-"<<endl;
	}
	
	
	return 0;
}
int cf(int a,int n){
	int ans=1;
	for(int i=0;i<n;i++){
		ans*=a;
	}
	return ans;
}
string func(int n,int h){//次数与行数 2 1/2/3
	int t=h%cf(3,n-2);
	int hn=h/cf(3,n-2)%2;
	if(n==1)return "X";
	if(!hn){
		string s="";
		s=s+func(n-1,t);
		for(int i=0;i<cf(3,n-2);i++){
			s=s+' ';
		}
		s=s+func(n-1,t);
		return s;
	}
	else{
		string s="";
		for(int i=0;i<cf(3,n-2);i++){
			s=s+' ';
		}
		s=s+func(n-1,t);
		for(int i=0;i<cf(3,n-2);i++){
			s=s+' ';
		}
		return s;
	}
	
}

  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值