ブルーブリッジカップブラシ問題①

はじめに:児童・生徒の皆さん、こんにちは!長い間あっていませんでしたね!この記事は私のブルーブリッジカップOJ執筆メモです!この記事は、コラム「ブルー ブリッジ カップ」に属しています。このコラムの目的は、質問の作成記録と学習プロセスを記録し、前進し続けるためのモチベーションを高め、来年の ACM、ICPC、ブルー ブリッジ カップ、およびブルー ブリッジ カップに備えることです。また、同じように疑問を解決する道を進んでいる友人に会えるように、この記事が役立つことを願っています。

ここに画像の説明を挿入

1. 単語分析

タイトル説明
シャオランは魔法の言語を学んでいます。この言語の単語はすべて英小文字で構成されており、一部の単語は通常の英語の単語の長さをはるかに超える非常に長いものになります。Xiaolan さんは、長い間勉強したのにいくつかの単語を思い出せませんでした。彼はこれらの単語を完全に暗記するのではなく、単語の中にどの文字が最も多く出現するかによって単語を区別するつもりでした。

シャオランを助けてください。言葉を発した後、最も多く表示される文字とその文字が表示される回数を見つけるのを手伝ってください。

入力説明
英小文字のみで構成される単語を含む行を入力します。

すべての評価ケースで、入力語長は 1000 を超えません。

出力の説明
2 行を出力します。最初の行には英語の文字が含まれており、単語内でどの文字が最も頻繁に出現するかを示します。同じ出現数の文字が複数ある場合は、辞書順が最も小さい文字を出力します。

2 行目には、単語内で最も頻繁に出現する文字の出現数を表す整数が含まれています。

入出力例
例1
入力

蘭橋
コピー
出力


2
コピー
2
入力

長い長い長い長い
コピー
出力

o
6

ACコード:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    string s;
    int max=0,a[26]={
    
    0};
    char c;
    cin>>s;
    for(int i=0;i<s.length();i++)
    {
    
    
        a[s[i]-'a']++;
    }
    for(int i=0;i<26;i++)
    {
    
    
        if(a[i]>max)
        {
    
    
            max=a[i];
            c=i+'a';
        }
    }
    cout<<c<<endl;
    cout<<max<<endl;
    return 0;
}

2. 統計

トピックの説明
Xiaolan は学生のために試験を企画しました。論文の合計スコアは 100 点で、各学生のスコアは 0 ~ 100 の整数です。

少なくとも 60 点を合格と呼びます。少なくとも 85 のスコアが優れているとみなされます。

合格率と優秀率をパーセントで表し、パーセント記号の前の部分を四捨五入して整数に計算してください。

入力の説明
入力の最初の行には整数が含まれています

n (1≤n≤10 4 ) は、テストを受ける人の数を表します。

n 行あり、各行には生徒のスコアを表す 0 から 100 までの整数が含まれます。

出力の説明
それぞれ合格率と優秀率を示すパーセンテージを含む 2 行を出力します。パーセント記号の前の部分は整数に丸められます。

入出力サンプル入力

7
80
92
56
74
88
100
0
コピー
出力

71%
43%

ACコード:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    int n;
    int grade;
    int sum1=0,sum2=0;
    cin>>n;
    for(int i=0;i<n;i++)
    {
    
    
        cin>>grade;
        if(grade>=60)
        {
    
    
            sum1+=1;
        }
        if(grade>=85)
        {
    
    
            sum2+=1;
        }
    }
    sum1=sum1*100.0/n*1.0+0.5;
    sum2=sum2*100.0/n*1.0+0.5;
    printf("%d%%\n%d%%",sum1,sum2);
}

3、最短路

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

以下の図に示すように、
G は青い辺の長さが 1、オレンジ色の辺の長さが 2、緑の辺の長さが 3 である無向グラフです。

画像の説明

AからSまでの最短距離は何ですか?

ACコード:

#include <iostream>
using namespace std;
int main()
{
    
    
  printf("6");
  return 0;
}

4. 戸板製作

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

Xiaolan さんは、通りの住民の番地を作りたいと考えています。

この通りには合計
2020 人の
2020 人の住民がおり、家番号には 1 から 2020 までの番号が付けられています。

Xiaolan の家の番号の作り方は次のとおりです。

0~

9 これらの数字と文字、最後に必要に応じて家番号に文字を貼り付けます。たとえば、家番号 1017 の場合は、文字を 1 つずつ貼り付ける必要があります。

1、0、1、7、それは必須です

1文字0、2文字1、1文字7。

1 から 2020 までのすべての家番号を作るには、2 は何文字必要か聞いてもいいですか?

ACコード:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    int count=0;
    int t;
    for(int i=1;i<=2020;i++)
    {
    
    
        t=i;
        while(t)
        {
    
    
            if(t%10==2)
            {
    
    
                count++;
                
            }
            t/=10;
        }
    }
    cout<<count;
}

5. カード

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

シャオランにはたくさんの数字カードがあり、それぞれのカードには0から9までの数字が書かれています。

シャオランはこれらのカードを使って数字を綴ろうとしています。彼は次から始めたいと考えています。

1 正の整数のスペルを開始し、それぞれを保存すると、カードを他の数字のスペルに使用できなくなります。

シャオランは 1 からどれだけ綴れるかを知りたいと思っています。

たとえば、シャオランが 0 ~ 9 のカード 3 枚を含む 30 枚のカードを持っている場合、シャオランは 1 ~ 10 をスペルアウトできます。


しかし、 11 11と綴る場合、
カード
1 1
は 1 枚だけであり、
11
11 と綴るには十分ではありません。

今、シャオランは
0
0 から
9
9までの
2021枚のカードを手札に持っています
。合計
20210枚のカードがあります。シャオランは1 1
から何枚のカードを得ることができますか?

ヒント: この問題を解決するには、コンピューター プログラミングを使用することをお勧めします。

ACコード:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    int num[10];
    for(int i=0;i<10;i++)
    {
    
    
        num[i]=2021;
    }
    for(int i=1;;i++)
    {
    
    
        int x=i;
        while(x)
        {
    
    
            if(num[x%10]==0)
            {
    
    
                cout<<i-1;
                return 0;
            }
            num[x%10]--;
            x/=10;    
        }
    }
    return 0;
}

6. 数字の三角形

タイトル 説明
ここに画像の説明を挿入
上の図はデジタル トライアングルを示しています。三角形の頂点から底辺まではさまざまなパスがあります。各パスについて、パス上の数値を合計して合計を求めます。あなたのタスクは、最大の合計を見つけることです。

パス上の各ステップは、1 つの番号から次のレベルと、その番号に最も近い左または右の番号にのみ移動できます。また、左に下りる回数と右に下りる回数は1以上異なることはできません。

入力の説明
入力の最初の行には整数が含まれています

N (1≤N≤100) は、三角形の行数を示します。

次の N 行は数値三角形を示します。数字の三角形の数字はすべて 0 から 100 までの整数です。

出力の説明
答えを表す整数を出力します。

入出力サンプル入力

5
7
3 8
8 1 0
2
7 4 4 4 5 2 6 5
コピー
出力

27

ACコード:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    int e[101][101];
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    
    
        for(int j=1;j<=i;j++)
        {
    
    
            cin>>e[i][j];
        }
    }
    for(int i=2;i<=n;i++)
    {
    
    
        for(int j=1;j<=i;j++)
        {
    
    
            e[i][j]+=max(e[i-1][j],e[i-1][j-1]);
        }
    }
    if(n%2 == 0)
    {
    
    
        cout << max(e[n][n/2],e[n][n/2+1]);
    }
    else
    {
    
    
        cout << e[n][n/2+1];
    }
}

7. スコア分析

トピックの説明
Xiaolan は学生のために試験を企画しました。論文の合計スコアは 100 点で、各学生のスコアは 0 ~ 100 の整数です。

このテストの最高点、最低点、平均点を計算してください。

入力の説明
入力の最初の行には整数が含まれています

n (1≤n≤10 4 ) は、テストを受ける人の数を表します。

n 行あり、各行には生徒のスコアを表す 0 から 100 までの整数が含まれます。

出力の説明
3 行を出力します。

最初の行には、最高スコアを表す整数が含まれています。

2 行目には、最小スコアを表す整数が含まれています。

3 行目には、小数点以下 2 桁を保持するように四捨五入された実数が含まれており、平均スコアを示します。

入出力サンプル入力

7
80
92
56
74
88
99
10
コピー
出力

99
10
71.29

ACコード:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    int n;
    int max=0,min=100;
    double aver;
    int grade;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    
    
        cin>>grade;
        aver+=grade;
        if(grade>max)
        {
    
    
            max=grade;
        }
        if(grade<min)
        {
    
    
            min=grade;
        }
    }
    cout<<max<<endl<<min<<endl;
    printf("%.2lf",aver/n);
}

8. 買い物リスト

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

シャオミンは就職したばかりで、上司はとても親切ですが、妻はショッピングが大好きです。上司は忙しいとき、よくシャオミンにショッピングモールへの買い物を手伝ってくれるように頼みます。シャオミンはとても退屈していますが、断るのは簡単ではありません。

いや、ビッグセールがまたやってきた!上司の妻は長い買い物リストを作成しましたが、そのリストにはすべて割引がありました。

シャオミンにも一癖があり、最後の手段でない限り、決してカードをスワイプせず、直接現金で支払います。

シャオミンはとても動揺しています。この買い物を完了するために ATM から引き出す必要がある現金の金額を計算するのを手伝ってください。


ATMでは100
元札は100枚までしか出金できません。シャオミンさんは、十分な額がある限り、現金をできるだけ少なく引き出したいと考えています。あなたの仕事は、Xiao Ming が引き出す必要がある現金の最低額を計算することです。

以下は頭痛の種となる買い物リストです。プライバシー保護のため、商品名は隠しています。

**** 180.90 12% オフ
**** 10.25 65% オフ
**** 56.14 10% オフ
**** 104.65 10% オフ
**** 100.30 12% オフ
**** 297.15 半額
**** * 26.75 35% オフ
** ** 130.62 半額
**** 240.28 52% オフ
**** 270.62 20% オフ**** 115.87 12% オフ**** 247.34
55% オフ**** 73.21 10 % オフ**** 101.00 半額**** 79.54 半額**** 278.44 30% オフ**** 199.26 半額**** 12.97 10% オフ**** 166.30 22% オフ*** * 125.50 52% オフ**** 84.98 10% オフ**** 113.35 32% オフ* *** 166.57 半額**** 42.56 10% オフ**** 81.90 15% オフ**** 131.78 20 % オフ**** 255.89 22% オフ**** 109.17 10% オフ**** 146.69 32% オフ*** * 139.33 35% オフ



















**** 141.16 72% オフ
**** 154.74 20% オフ
**** 59.42 20% オフ****
85.44 62% オフ
**** 293.70 12% オフ
**** 261.79 65% オフ
** ** 11.30 12% オフ
* *** 268.27 52% オフ
**** 128.29 12% オフ
**** 251.03
20% オフ **** 208.39 25% オフ
**** 128.88 25% オフ ****
62.06 10%オフ
**** 225.87 25% オフ
** ** 12.89 25% オフ
**** 34.28 75% オフ
**** 62.16 52% オフ
**** 129.12 半額
**** 218.37 半額****
289.69 20%
オフ

12% オフは表示価格を指します

88 回の計算

20%オフは

80 個の計算、残りは類推です。特に半額の基準となるのは、

50の計算。

Xiao Ming が ATM から引き出したい金額を元で入力してください。

ACコード:

#include <iostream>
using namespace std;
int main()
{
    
    
  cout<<5200;
  return 0;
}

9. 宇宙

この問題は穴埋め問題です。結果を計算した後、コード内の出力ステートメントを使用して穴埋め結果を出力します。

Xiaolan を使用する準備ができました

配列を開くには 256MB のメモリ空間が必要です。配列の各要素は

32 ビット 2 進整数。プログラムが占有するスペースとメモリを維持するために必要な補助スペースを考慮しない場合は、お問い合わせください。

256MBに何件保存できるか

32ビットの2進整数?

ACコード:

#include <iostream>
using namespace std;
int main()
{
    
    
  long long sum=256*1024*1024/4;
  cout<<sum;
  return 0;
}

10. 仕分け

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

Xiaolan さんは最近、いくつかのソート アルゴリズムを学びました。その中でもバブル ソートに深い感銘を受けました。

バブル ソートでは、一度に 2 つの隣接する要素のみを交換できます。

Xiaolan は、文字列内の文字がソートされ、隣接する 2 つの文字のみが交換できる場合、考えられるすべてのソート スキームの中で、バブル ソートの総交換回数が最も少ないことを発見しました。

たとえば、文字列 � �� � lan
1 1 のスワップのみが必要です。文字列 � � �� qiao をソートするには合計4 4 回のスワップが必要です。











Xiaolan はたくさんの文字列を見つけて並べ替えようとしましたが、たまたま
100
100 回の交換が必要な文字列に遭遇しましたが、この文字列を書き留めるのを忘れたため、今では見つけることができません。

Xiaolan が英小文字のみを含み、繰り返し文字が含まれていない文字列を見つけるのを手伝ってください。この文字列の文字を並べ替えるには、正確に
100
100 の交換が必要です。複数見つかった場合は、最短のものをシャオランに教えてください。まだ短いものが複数ある場合は、辞書順が最も小さいものを Xiaolan に伝えてください。

ACコード:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    
    
    int i,m,t,j;
    int n=0;
    while((n*n-n)/2<100)n++;
    m=(n*n-n)/2-100;
    char arr[n];
    for(i=0;i<n;i++)arr[i]=97+n-i-1;
    for(i=m;i>0;i--)
    {
    
    
        if(arr[i]<arr[i-1])
        {
    
    
            t=arr[i];
            arr[i]=arr[i-1];
            arr[i-1]=t;
        }
    }
    for(i=0;i<n;i++)
    {
    
    
        printf("%c",arr[i]);
    }
  return 0;
}

11. 運動のために走る

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

シャオランは毎日運動しています。

通常の状況では、シャオランさんは毎日
11キロメートルを走ります。
特定の日が月曜日または月初め (
11 日
) に当たる場合、シャオランは自分を奮い立たせるために
22
キロメートルを走ります。月曜日か月初めの同じ時間であれば、シャオランも
22
キロを走ります。


Xiaolan は、 2000 年の
2000年
11 月11 日
(土曜日) から2020 年の2020 年10 月11 日(木曜日) まで、長期間にわたって実行されてきました。この間、シャオランは合計何キロ走りましたか?







ACコード:

#include<iostream>
using namespace std;
int main()
{
    
    
    int week[7]={
    
    6,7,1,2,3,4,5};
    int month[13]={
    
    0,31,0,31,30,31,30,31,31,30,31,30,31};
    int sum=0,day=0;
    for(int year=2000;year<=2020;year++)
    {
    
    
        if( (year%4==0&&year%100!=0) ||year%400==0  )
            month[2]=29;
        else
            month[2]=28;
        for(int i=1;i<=12;i++)
        {
    
    
            for(int j=1;j<=month[i];j++)
            {
    
    
                if(week[day%7]==1||j==1)
                    sum++;
                sum++;
                day++;
                if(year==2020&&i==10&&j==1)
                {
    
    
                    cout<<sum;
                    return 0;
                }
            } 
        } 
    }
}

12. サーペンタインフィリング

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

以下の図に示すように、Xiao Ming は無限行列を
1 1 から始まる正の整数で「蛇の形」に埋めます。

1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …

コピー行列の2行2列目の数字が5 5
であることが簡単にわかります行列の行20 20、20 20の数値を計算してください。





ACコード:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    int mp[101][101],row=0,col=0,cnt=1;
    mp[0][0]=1;
    while(!mp[19][19])
    {
    
    
        mp[row][++col]=++cnt;
        while(col)
        {
    
    
            mp[++row][--col]=++cnt;
        }
        mp[++row][col]=++cnt;
        while(row)
        {
    
    
            mp[--row][++col]=++cnt;
        } 
    }
    cout<<mp[19][19];
    return 0;
}

13. インクリメンタルシーケンス

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

文字行列の場合、行列内の増加シーケンスと呼びます。行列内で 2 つの文字を見つけることを意味します。それらは同じ行、同じ列、または同じ 45 ~ 45 度の傾斜にあり、2 つの文字は左から右
です
。見ること、または上から下へ見ることは段階的に行われます。

たとえば、次のマトリックスでは

LANN
QIAO
コピーには、LN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、AN などの 13 13 の増加シーケンス
あります。2 つの文字が左下から右上に配置されている場合、左から右に見た場合と上から下に見た場合では順序が異なることに注意してください。


次の
30 ×
30 行と
50
× 50 列からなる行列の場合、増加するシーケンスは合計でいくつありますか?

VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG
SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQF
ZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGA
BDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRL
YVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKH
ZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBU
XFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLR
ZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPG
MHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPA
VIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIF
GWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJC
EKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASK
PEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWW
CGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZP
RWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGS
PFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMR
JNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECL
YZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLP
HBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLN
DQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGF
LXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYW
CZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQ
IYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYI
ZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZB
HGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKP
FEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEAS
VJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJ
BMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSR
RARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVY
ABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADR DCLIRFKBFBHMAXX

ACコード:

#include <iostream>
using namespace std;
int main()
{
    
    
  char v[30][51]={
    
    "VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG",\
"SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQF",\
"ZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGA",\
"BDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRL",\
"YVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKH",\
"ZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBU",\
"XFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLR",\
"ZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPG",\
"MHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPA",\
"VIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIF",\
"GWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJC",\
"EKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASK",\
"PEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWW",\
"CGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZP",\
"RWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGS",\
"PFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMR",\
"JNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECL",\
"YZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLP",\
"HBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLN",\
"DQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGF",\
"LXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYW",\
"CZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQ",\
"IYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYI",\
"ZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZB",\
"HGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKP",\
"FEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEAS",\
"VJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJ",\
"BMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSR",\
"RRARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVY",\
"ABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADRDCLIRFKBFBHMAXX"};
  int s=0;
  for(int i=0;i<30;i++)
    for(int j=0;j<50;j++)
      for(int x=0;x<30;x++)
        for(int y=0;y<50;y++)
          if(v[i][j]<v[x][y]&&((i==x&&y>j)||(j==y&&x>i)||abs(y-j)==abs(x-i)&&!(x<=i&&y<=j)))
            s++;
  cout<<s;
}

14. 貨物の配置

タイトル説明
小蘭にはたくさんの商品を保管できる超大型倉庫があります。

さて、シャオランは

N 個の商品箱を倉庫に置く必要があり、各商品箱は通常の立方体です。小蘭では、長さ、幅、高さの互いに直交する 3 つの方向が規定されており、商品の各箱の側面は長さ、幅、高さと厳密に平行でなければなりません。

シャオランさんは、最終的にはすべての商品が大きな直方体に配置されることを望んでいます。つまり、長さ、幅、高さの方向に積み重ねます

L、W、Hグッズ、を満たす

n=長さ×幅×高さ。

与えられた

n、要件を満たすために商品を積み重ねるスキームはいくつありますか。

たとえば、次のようなとき

4 n=4 の場合、1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1の 6 6 通りの方式があります



すみません、いつ

2021041820210418 n=2021041820210418 ( 16 の16 桁
があることに注意してください) の場合、スキームは合計でいくつありますか?

ヒント: この問題を解決するには、コンピューター プログラミングを使用することをお勧めします。

解答を提出する
これは結果を空欄に記入する問題です。結果を計算して提出するだけです。この質問の結果は整数です。回答を送信するときにこの整数のみを入力してください。冗長な内容を入力すると得点は得られません。

ACコード:

#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
int main()
{
    
    
    long long n=2021041820210418;
    vector<long long>divisor;
    for(long long i=1;i<=sqrt(n);i++)
    {
    
    
        if(n%i==0)
        {
    
    
            divisor.push_back(i);
            long long k=n/i;
            if(k!=i)
                divisor.push_back(k);
        }
    }
    int count=0;
    vector<long long>::iterator a,b,c;
    for(a=divisor.begin();a!=divisor.end();a++)
    {
    
    
        for(b=divisor.begin();b!=divisor.end();b++)
        {
    
    
            for(c=divisor.begin();c!=divisor.end();c++)
            {
    
    
                if((*a)*(*b)*(*c)==n)
                    count++;
            }
        }
    }
    cout<<count<<endl;
    return 0;
}

15. 9 から 10 進数への変換

問題の説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけで済みます。

10 進数の正の整数
(
2022
)
9
(2022)
9 を10 進数に
変換すると

ACコード:

#include <iostream>
using namespace std;
int main()
{
    
    
  cout<<2+2*9+2*9*9*9;
  return 0;
}

16. 算術素数列

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

2,3,5,7,11,13,... は素数の列です。似ている:

7, 37, 67, 97, 127, 157 このようなすべて素数から構成される算術数列を素数の算術数列と呼びます。

上記のシーケンスの許容値は 30、長さは 6 です。

2004 年、グリーンは中国人のテレンス・タオと共同で、任意の長さの素数の算術数列が存在することを証明しました。これは数論の分野における驚くべき成果です。

この理論に基づいて、手元のコンピューターを使用して自信を持って検索してください。

長さは

算術素数列の最小許容値 10 はいくらですか?

ACコード:

#include<bits/stdc++.h>
using namespace std;
bool judge(int x)
{
    
    
    for(int i=2;i<x;i++)
    {
    
    
        if(x%i==0)
            return false;
    }
    return true;
}
int main()
{
    
    
    int ans=1,num,d;
    for(int i=2;i<50000;i++)
    {
    
    
        if(judge(i))
        {
    
    
            for(int d=1;d<1000;d++)
            {
    
    
                for(int j=1;j<1000;j++)
                {
    
    
                    num=i+d*j;
                    if(judge(num))
                        ans++;
                    else
                    {
    
    
                        ans=1;
                        break;
                    }
                    if(ans==10)
                    {
    
    
                        cout<<d;
                        return 0;
                    }
                }
            }
        }
    }
}

17. 7セグメントコード

タイトル 説明
この質問は穴埋め問題です。結果を計算し、コード内の出力ステートメントを使用して埋められた結果を出力するだけです。

Xiaolan は、7 セグメントのデジタル チューブを使用して特別なキャラクターを表現したいと考えています。
ここに画像の説明を挿入
上の図は 7 セグメント デジタル チューブの図を示しています。デジタル チューブ内には発光可能な
7 つの
LEDがあり、次のようにマークされています。

a、b、c、d、e、f、g。

シャオランはキャラクターを表現するために発光するダイオードの一部(少なくとも 1 つ)を選択する必要があります。文字の表現をデザインする際には、すべての発光ダイオードを接続する必要があります。

例えば:

bは発光し、その他のダイオードは発光せず、キャラクターを表現することができます。

例えば

他のダイオードでは光らないc光でキャラクターを表現できます。このスキームは、見た目は似ていますが、前の行のスキームとは異なる文字を表すために使用できます。

例えば:

a、b、c、d、e の輝き、

f、g非発光でキャラクターを表現できます。

例えば:

bとfが発光する場合、他のダイオードは発光ダイオードが接続されていないため、発光しなければキャラクターを表現することができません。

すみません、Xiaolan は 7 セグメント デジタル チューブで何種類のキャラクターを表現できますか?

ACコード:

#include <iostream>
using namespace std;

int BackTrack(int graph[][7],int visit[],int n,int i){
    
    
  int count=1;
  for(int x=0;x<n;x++){
    
    
    if(visit[x]!=1&&graph[i][x]!=0){
    
    
      visit[x]=1;
      count+=BackTrack(graph,visit,n,x);
      visit[x]=0;
    }
  }
  return count;
}
int main()
{
    
    
  int graph[7][7]={
    
    
    {
    
    1,1,0,0,0,1,0},
    {
    
    1,1,1,0,0,0,1},
    {
    
    0,1,1,1,0,0,1},
    {
    
    0,0,1,1,1,0,0},
    {
    
    0,0,0,1,1,1,1},
    {
    
    1,0,0,0,1,1,1},
    {
    
    0,1,1,0,1,1,1}
  };
  int visit[7]={
    
    0};
  printf("%d",BackTrack(graph,visit,7,0)/2);
  return 0;
}

18.ジャンプ

タイトルの説明
Xiaolan は、
n
行、 m 列のグリッド
で。

最初に、Xiaolan はグリッドの左上隅、つまり行
1
1 と列
1
1 に立っていました。


Xiaolan はグリッド チャート上を歩くことができます。歩くとき、彼が現在行 �r
および列 �cにいる場合

行番号
�r
より小さい行には移動できません。また、列番号の列にも移動できません。
�c
より小さい。同時に、彼が一歩で歩く直線距離は
3
3を超えません。

たとえば、Xiaolan が現在行33、列
55にいる場合、行33 列 66、行33 77 、行33、88 行 4 4、列5 5、行4 4、列6に移動できます。6、行4 4、列7 7、行5 5、列5 5 、行5 5、列6 6 6 6 、行5 5つの列の 1 つ。







































Xiaolan は最終的に行「n」
、列「m」に移動します

この図では、いくつかのポジションには、歩いて上がることで得られる報酬があり、いくつかのポジションには、歩いて上がることで受け入れなければならない罰があります。報酬と罰は最終的に重みに抽象化され、報酬は正、罰は負となります。

Xiaolan は、行
11 、列11からnm
移動した後重みの合計が最大になることを望んでいます。最大値はいくらですか?





入力の説明
入力の最初の行には、グラフのサイズを示す2 つの整数 � ,
� n , m が含まれています。


次の
� n
行はそれぞれ
� m の
整数を持ち、グリッド内の各点の重みを表します。

このうち、
1
� ≤
100 1 0 4 ≤ 体重1 0 4 、 1 ≤ n ≤ 100、 −10 4 ≤ 体重≤ 10 4です

















出力の説明
重みの最大合計を表す整数を出力します。

入出力例入力
例1

3 5
-4 -5 -10 -3 1
7 5 -9 3 -10
10 -2 6 -10 -4
コピー
出力

15

ACコード:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    int n,m,trans;
    cin>>n>>m;
    int grapth[n+1][m+1];
    int x[9]={
    
    0,0,0,-1,-1,-1,-2,-2,-3};
    int y[9]={
    
    -1,-2,-3,0,-1,-2,-1,0};
    for(int i=1;i<=n;i++)
    {
    
    
        for(int j=1;j<=m;j++)
        {
    
    
            cin>>grapth[i][j];
            trans=INT_MIN;
            for(int t=0;t<9;t++)
            {
    
    
                if(i+x[t]>0&&j+y[t]>0)
                    trans=max(trans,grapth[i+x[t]][j+y[t]]);
            }
            if(trans!=INT_MIN)
                grapth[i][j]+=trans;
        }
        
    }
    cout<<grapth[n][m]<<endl;
}

19. 時間表示

トピックの説明
Xiaolan は、友人と協力して時間を表示する Web サイトを開発したいと考えています。

サーバー上で、友人は整数で表される現在時刻を取得しています。その値は、 1970 年11 月11 日00:00:00 00:00:00から現在まで
経過ミリ秒数です。










さて、Xiaolan は今回の時間をクライアントに表示したいと考えています。Xiaolan は年、月、日を表示する必要はなく、時、分、秒を表示するだけでよく、ミリ秒を表示する必要はなく、単に破棄します。

整数で表される時刻が与えられた場合、その時刻に対応する時、分、秒を出力してください。

入力説明
時刻を表す整数を含む行を入力します。

出力の説明 時
、分、秒で表される現在時刻を HH:MM:SS の形式で出力します。HH は時間を表し、値は 0 0 ~
23
23

MM は分を表します、値は
0
0 から
59
59 です。SS は秒を意味し、値は
0
0 から
59
59 です。時、分、秒が 2 桁に満たない場合は、先頭に
0
0 が付加されます。

入出力例入力
例1

46800999
コピー
出力

13:00:00
コピー
例2
入力

1618708103123出力
をコピー

01:08:23
copy
評価ケースのスケールと一致
すべての評価ケースで、指定された時間は
1
0
18
10
18を超えない
正の整数です。

ACコード:

#include<iostream>
using namespace std;
int main()
{
    
    
    long long sum;
    cin>>sum;
    int hh,mm,ss;
    sum/=1000;
    hh=sum/60/60%24;
    mm=sum/60%60;
    ss=sum%60;
    printf("%02d:%02d:%02d",hh,mm,ss);
}

おすすめ

転載: blog.csdn.net/H1727548/article/details/131286572