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;
}
View Code


B Bishop
题意:题目给你一个r行c列的矩阵,问你按如下规则移动,最多可以移动几个方形,最初位置在最左上角

r1+c1=r2+c2

r1 - c1=r2-c2

题解:仔细观察可以找到规律,可以找到一个循环

代码:


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll h,w;
int main(){
    cin>>h>>w;//输入行和列
    ll sum=0;
    if(h==1){//只有一行 
        sum=1;
    }else if(w==1){
        sum=1;
    }else{//至少有两行 
        ll a=w;
        if(h%2==0){//偶数 
            sum=a*(h/2);
        }else{//奇数 
            sum=a*(h/2);
            if(w%2!=0){
                w++;
            }
            sum=sum+w/2;
        }
    }
    cout<<sum<<endl;
    return 0;
}
View Code

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;
}
View Code

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;
} 
View Code