A Kth Term
题意:输出数组对应坐标的值,注意,坐标是从1开始的
题解:用数组存起来就行
代码:
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main(){ int num[]={0,1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51}; int n; cin>>n; cout<<num[n]<<endl; return 0; }
B Bishop
题意:题目给你一个r行c列的矩阵,问你按如下规则移动,最多可以移动几个方形,最初位置在最左上角
r1+c1=r2+c2
r1 - c1=r2-c2
题解:仔细观察可以找到规律,可以找到一个循环
代码:
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 ll h,w; 5 int main(){ 6 cin>>h>>w;//输入行和列 7 ll sum=0; 8 if(h==1){//只有一行 9 sum=1; 10 }else if(w==1){ 11 sum=1; 12 }else{//至少有两行 13 ll a=w; 14 if(h%2==0){//偶数 15 sum=a*(h/2); 16 }else{//奇数 17 sum=a*(h/2); 18 if(w%2!=0){ 19 w++; 20 } 21 sum=sum+w/2; 22 } 23 } 24 cout<<sum<<endl; 25 return 0; 26 }
C Sqrt Inequality
题意:给你三个数:a,b,c,要我们判断√a+√b<√c是否成立,
题解:用简单的方法处理肯定会wa,这里要对式子做出相应的数学处理
代码;
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll a,b,c; int main(){ cin>>a>>b>>c; ll t=4*a*b; ll tt=c*c+(a+b)*(a+b)-2*c*(a+b); if(t<tt&&(c-a-b)>0){ cout<<"Yes"<<endl; }else{ cout<<"No"<<endl; } return 0; }
D String Equivalence
题意:题目定义了两个字符串s,t,当这两个字符串符合题目所给的要求的时候,我们将它们视为同构的,并且,当s<t时,我们这个时候将s看成是标准格式,这个时候,我们要出输出s而不输出t,然 后,题目要你输出长度为n的全部的是标准格式的字符串。
题解:这题是一个简单的dfs题目,给题目给出字符串长度n,并且要字典序最小的,我们应该从a开始dfs,然后字符串的长度达到n就输出,注意,这里是有一定的规则的,要符合题目所给的“同构” 原则,假如现在我们要搜索第k位,这个时候假如前k-1位已经有dif种字母,这个时候,我们在第k位我们可以遍历的字母数为dif+1
代码:
#include<iostream> using namespace std; int n; int dif=0; char s[1010]; void dfs(int i){ if(i==n+1){ cout<<s+1<<endl; return ; } for(int j=0;j<=dif;j++){ s[i]='a'+j; int temp=dif; if(j==dif){ dif++; } dfs(i+1); dif=temp; } } int main(){ cin>>n; dfs(1); return 0; }