2019第十ブルーブリッジカップ・グループC ++ Bの解答セクションのタイトル

質問A:チーム

この総問題:5分
[問題の説明]
バスケットボールのコーチとして、あなたは第1-5桁のナンバーワンプレイヤーを選択する必要があり、以下のリストから、それぞれ、
チームの先発の組成物。
米国特許第5番1と各プレイヤーのスコアが次の表に示す場合。1つの先発を計算してください
可能な最大のスコアの合計に第5号の位置はどのくらいですか?

回答:490

アイデア:直接手計算(注:5号まで1号は別の人でなければなりません)

質問C:列の数が評価されます

表題スコア:10点
[問題の説明]
列1,1,1,3,5,9,17の数を考えると、...は、開始から項目4は、各上位3としています。探している
最初の20190324の最後の4桁の数字を。
[回答]提出する
だけ計算し、結果を提出する必要があり、これは空白の質問で塗りの結果です。この質問の結果は、
4ビットの整数(ヒント:数千人の答えは0ではない)だけ整数を埋めるために答えを提出する、記入
エクストラコンテンツ得点はありません。

回答:4659

#include <iostream>
using namespace std;
int a[20190325]; // 数组较大时一般要写在主函数外
int main()
{
	int i;
	a[0]=a[1]=a[2]=1;
	for(i=3;i<20190324;i++)   {
		a[i]=a[i-1]+a[i-2]+a[i-3];
		a[i]%=10000; // 没有这句的话数据太大,因为只需求最后4位数字所以可以每次求完一个就取余		
	}
	cout<<a[20190323]%10000<<endl;
	return 0;
}

質問D:数の分解

タイトルスコア:10
[説明]の問題を
2019年には、3つの異なる正の整数に分解し、各パケットの正の整数である必要はない
の総分解の数2及び図4に示すように、多くの異なる方法を含みますか?
注3の整数を切り替える順序は同じ方法であると考えられることは、例えば1000 + 1001 + 18
+ 1000年1001 + 18は同一とみなされます。
[回答]提出する
だけ計算し、結果を提出する必要があり、これは空白の質問で塗りの結果です。この質問の結果がある
提出答えは、整数のみを記入得点はありません余分な内容を記入する整数。

回答:40785 

#include <iostream>
using namespace std;
bool f(int n) 
{
	int t;
	while(n!=0) {
		t=n%10; // 先判断最后一位数(这里要加个变量t,没有则会让n改变,后面无法判断)
		if(t!=2&&t!=4) n/=10;
		else break;	 
	}
	if(n==0) return 1;
	else return 0;
} 
int main()
{
	int a[2020],i,j=0,k,p=0,ans=0;
    // 要先筛选符合条件的放于数组中,否则不能输出!
	for(i=1;i<2018;i++) {
		if(f(i)) {
			a[j++]=i;
			p++;
		}
	}
	for(i=0;i<p;i++)
	  for(j=i+1;j<p;j++)
	    for(k=j+1;k<p;k++) {
	   	  if(((a[i]!=a[j])&&(a[i]!=a[k])&&(a[j]!=a[k]))&&((a[i]+a[j]+a[k])==2019)) ans++;
	    }
	cout<<ans<<endl;	
	return 0;
}

私は部門が直接アクセスできるとは思いませんでした...

質問F:特別な数字と

制限時間:1.0秒メモリ制限:256.0メガバイトこの質問アウト:15分
[問題の説明]
(先頭の0は含まない)の興味深いを含む暁デジタル2,0,1,9桁対1の
ような40カウントは、28の合計1,2,9,10 32、39及び40を含み、それらは574です。
1からnまで、このようなすべての数字とどのくらいだろうか?
[入力形式の
入力ラインは、N 2つの整数を含んでいます。
[]出力形式の
整数値を含む出力ラインは、条件を満足する数を表します。
[サンプル入力]
40
[出力]サンプル
574
[評価]実施例及びスケールの表記
20%の場合、1≤n≤10と評価のため。
50%レビューの実施形態、1≤n≤100使用します。
80%レビューの実施形態、1≤n≤1000使用します。
レビューのために、すべての場合、1≤n≤10000使用。

#include <iostream>
using namespace std;
bool f(int n) 
{
	int t;
	while(n) {
		t=n%10; // 先判断最后一位数(这里要加个变量t,没有则会让n改变,后面无法判断)
		if(t==2||t==0||t==1||t==9) {
			return 1; continue;
		}
		n/=10; 
	}
	if(n==0) return 0;
} 
int main()
{
	int i,n,ans=0;  cin>>n;
	for(i=1;i<=n;i++) {
		if(f(i)) ans+=i;		
	}
	cout<<ans<<endl;		
	return 0;
}

質問H:等差数列

制限時間:1.0秒メモリの制限:256.0メガバイトこの質問スコア:20ポイント
[問題の説明]
数学の先生は、等差数列の和の問題のうち、暁明を与えました。しかしながら、不注意暁忘れ
Nは整数だけ覚えて、柱部の数。
これは、今持っている暁明は、Nシリーズの最短含ま整数演算を知りたかった、N個の整数を与える
いくつかの?
[入力フォーマット
入力の最初の行のは、整数Nを含んでいます
2行目はNの整数A1、A2、...、ANが含まれています。(必ずしもA1〜AN演算になお
順序指定された列)
[]は出力フォーマットの
出力は、整数回答を表します。
[サンプル入力]
。5
2641020
[出力]試料
10
[実施例の説明
2,6,4,10,20最短算術配列を含むが2,4,6,8,10,12,14,16 、
18、20。
[評価]規模の患者をし、合意された
すべてのユースケースを検討するために、2≤N≤100000

#include <iostream>
#include <algorithm>
using namespace std;

int a[100001];
int main()
{
	int n,i,ans; cin>>n;
	for(i=0;i<n;i++) cin>>a[i];
	sort(a,a+n); 头文件为 #include <algorithm>
	int d=a[1]-a[0],max=a[0],min=a[0]; // d为公差
	
	for(i=1;i<n-1;i++) {
		if(a[i+1]-a[i]<d) d=a[i+1]-a[i];	
	}
	for(i=1;i<n;i++) {
		if(a[i]>max) max=a[i];
		if(a[i]<min) min=a[i];
	}
	cout<<(max-min)/d+1<<endl;
		
	return 0;
}

概要:考えてゼロからスタート、アイデアの種類を変更しようとする時間を作ることができないことが見出されたように、綿密なプロセスです。

 

おすすめ

転載: blog.csdn.net/qq_42458302/article/details/89343973