CF刷题杂

1 延长数

3.12 1647A

image

点击查看代码
int t;
	int a,cnt=0,i;
	//尝试你应该报名参加比赛×能够屈服  1
	//找出十进制数中最大的且不含0的相同数字不相临的数 a最大 1000 
	//很明显答案只能由不相临重复的1,2 构成(其他的会减少位数)
	/*
	因为2 和 1 的个数只能差一个 
1
2
21
121  4
212 5
2121  6  
12121  7  很明显奇数 1开头 增长位数
21212   8
212121   9
1212121   10
2121212    11
21212121    12
121212121    13 
1: 后加(n/3)个21  2: 加(n/3)个12   3:21后+(n/3) 21 
	*/ 
	cin>>t;
	while(t--){
		cin>>a;
		if(a%3==1){
		 cout<<"1";
		 for(i=1;i<=(a-1)/3;i++) cout<<"21"; 
		 cout<<endl;
	}
	else if(a%3==2){
		cout<<"2";
		for(i=1;i<=(a-2)/3;i++) cout<<"12"; 
		cout<<endl;
	}
	else {
		cout<<"21";
		for(i=1;i<=(a-3)/3;i++) cout<<"21"; 
		cout<<endl;
	}
}

给定个数、和 求最大平方个数

3.15 1646A

评价:题目描述的太复杂了 当时还想着n+1

点击查看代码
int t;
	cin>>t;
	while(t--){
		long long n,s;
		cin>>n>>s;
		cout<<s/(n*n)<<endl;
		//知n数字数   s和     求n^2的个数   [0,n)   n+1数序列 
	}

给n 问下标几赢 (2^n-1)

3.15 1651A

点击查看代码
//读题简化 知 给n 问下标几赢
	//比赛时,若和为奇数 下标小赢  反之 下标大的赢
	//看看有规律没  或直接模拟  只有30  (刚好int范围) 
	// 2 是3赢  4是15赢   观察图显然可知 
	int t,a[32]={1,3,7,15},k=2,i;
	for(i=1;i<=30;i++){
		a[i]=k-1;
		k*=2;
	}
	cin>>t;	
	while(t--){
		int n;
		cin>>n;
		cout<<a[n]<<endl;
	}
posted @ 2022-05-02 01:01  fangxingxing  阅读(52)  评论(0)    收藏  举报