• 2020年3月14日Panasonic Programming Contest 2020


    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

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

     代码:

     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 }
    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
  • 相关阅读:
    ObjectiveC的算术表达式 .
    《ObjectiveC 程序设计(第4版)》图书信息
    实例变量的访问及数据封装
    Android系统中的广播(Broadcast)机制简要介绍和学习计划 .
    Android应用程序的Activity启动过程简要介绍和学习计划 .
    如何在Scala中使用条件表达式 .
    Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
    Android应用程序组件Content Provider简要介绍和学习计划
    asp.net怎么将网页添加为首页或加入收藏夹中
    学习网址
  • 原文地址:https://www.cnblogs.com/blogxsc/p/12506799.html
Copyright © 2020-2023  润新知