ブルーブリッジカップ練習システム練習問題解答-入門訓練
13976 ワード
記事の推奨 javaなどの学習リソースのベストセット java電子図書資源 ビッグデータ学習リソースの選択 javaプロジェクト練習ベスト ブルーブリッジカップ練習システム練習問題-入門訓練
タイトル検索方法:Ctrl+F->タイトル名を入力->解答にナビゲートします.
入門訓練(詳細はアルゴリズム-ブルーブリッジカップ練習問題(1-1)を参照)
基礎練習(詳細はアルゴリズム-ブルーブリッジカップ練習問題(2-1)を参照)
基礎練習(詳細はアルゴリズム-ブルーブリッジカップ練習問題(2-2)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-1)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-2)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-3)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-4)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-5)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-6)を参照)
アルゴリズムの向上(詳細はアルゴリズム-ブルーブリッジカップ練習問題(4-1)を参照)
アルゴリズムの向上(詳細はアルゴリズム-ブルーブリッジカップ練習問題(4-2)を参照)
歴代試験問題(詳しくはアルゴリズム-ブルーブリッジカップ練習問題(5-1)を参照)
歴代試験問題(詳細はアルゴリズム-ブルーブリッジカップ練習問題(5-2)を参照)
入門訓練A+B問題
質問記述入力A,B,出力A+B.説明:「問題の説明」の部分では、試験問題の意味と、要求された目標が与えられます.入力フォーマット入力の最初の行には、A、Bを表すスペースで区切られた2つの整数が含まれます.説明:「入力フォーマット」は、プログラムをテストするときに、入力が一定に満たされるフォーマットを説明します.
問題を解くときは、与えられた入力が入力フォーマットの要求を満たしていると仮定する必要があります.そのため、入力フォーマットをチェックする必要はありません.余分なフォーマットチェックは逆効果になる可能性があります.プログラムエラーを使用します.
テストの時、システムは自動的に入力データをあなたのプログラムに入力して、あなたはいかなるヒントを与えることができません.例えば、入力時に「A、Bを入力してください」などとヒントを与えると不要で、これらの余分な出力はプログラムをエラーと判定します.
出力フォーマットA+Bの値を表す整数を含む1行を出力します.説明:「出力フォーマット」は、あなたのプログラムが結果を出力するときに満たさなければならないフォーマットです.
出力する時、あなたのプログラムはこのフォーマットの要求を満たさなければなりません.何の内容も少なくしてはいけません.何の内容も多くしてはいけません.コンテンツと出力フォーマットの要求が異なる場合、プロンプト情報、中間デバッグ情報、タイミング、統計情報などを出力したプログラムがエラーと判断されます.
サンプル入力12 45の説明:「サンプル入力」は、「入力フォーマット」の要件を満たす入力のセットを示す.
ここで与えられた入力は、あなたのプログラムをテストするための入力にすぎません.テストのとき、あなたのプログラムをテストするための入力も多くなります.
サンプル出力57は、「サンプル出力」が、「出力フォーマット」の要件を満たす出力のセットを与える例を示す.
サンプル出力の結果はサンプル入力と対応しているので、サンプルの入出力を使って簡単にプログラムをチェックすることができます.
特に、サンプル入出力が可能なプログラムは必ずしも正しいプログラムではなく、テスト時にサンプルデータに限らず多くのグループのデータでテストされることを指摘する.1つのプログラムがサンプルデータに合格した可能性がありますが、テスト時には0点しか得られません.このプログラムはサンプルのような特例の中でしか正しくなく、汎用性がないため、より多くのデータをテストするときにエラーが発生する可能性があります.
たとえば、本題では、入力が何であれ57と入力するプログラムを書くと、サンプルデータは正しいが、入力が1と2であっても、このプログラムは57を出力し、他のデータというプログラムは正しくない.
データ規模は、約−1000<=A,B<=10000とする.説明:「データ規模と約束」では、試験問題の主要パラメータの範囲が示されています.
この範囲は解題にとって非常に重要であり,異なるデータ範囲は試験問題を異なる解法で解決する必要がある.例えば本題で与えられたA,Bの範囲は大きくなく,整数(int)を用いて保存することができ,範囲がより大きく,intの範囲を超える場合は,他の方法を考慮して大数を保存する.
いくつかの範囲は便利な時に“問題の説明”の中で直接与えたので、問題をする時この範囲を見るだけではなくて、また問題の説明に注意します.
入門訓練Fibonacci数列
問題記述Fibonacci数列の繰返し式は、Fn=Fn-1+Fn-2であり、F 1=F 2=1である.
nが比較的大きい場合,Fnも非常に大きく,Fnを10007で割った残数がどれだけあるかを知りたい.
入力フォーマット入力には整数nが含まれます.出力フォーマットは、Fnが10007で除算された残数を表す整数を含む行を出力します.説明:本題では、答えはFnを10007の余数で割ることを要求するので、私たちはこの余数を算出することができればいいだけで、先にFnの正確な値を計算する必要はなく、計算の結果を10007で除算して余数を取り、直接余数を計算するのは先に原数を算出してから余剰を取るより簡単であることが多い.
サンプル入力10サンプル出力55サンプル入力22サンプル出力7704データ規模と約1<=n<=1000000.
入門訓練シーケンスの和を求める
問題の説明は1+2+3+...+nの値を求める.入力フォーマット入力には整数nが含まれます.出力フォーマットは、1+2+3+...+nの値を表す整数を含む行を出力します.サンプル入力4サンプル出力10サンプル入力100説明:いくつかの試験問題では、より良い問題を解決するために複数のサンプル入力出力が与えられます.
一般的に、これらのサンプルはすべてテストに合格する必要がありますが、これらのサンプルデータのセットが正しいわけではありません.プログラムが完全に正しいわけではありません.潜在的なエラーは、スコアが低い可能性があります.
サンプル出力5050データ規模は、約1<=n<=10000000とする.説明:ここのデータ規模に注意してください.
この問題の直接的な考え方は、ループを直接使用して累積することですが、データの規模が大きい場合、このような「暴力」の方法はタイムアウトを招くことが多いです.この時、他の方法を考えなければなりません.あなたのプログラムの入力として10000000を使用すると、あなたのプログラムは所定の時間内に実行できるかどうか試してみてください.
この問題のもう一つの注意すべき点は、答えの大きさがあなたの言語のデフォルトの整数(int)の範囲内ではないことです.整数を使用して結果を保存すると、結果が間違ってしまいます.
C++またはC言語を使用してprintfを使用して結果を出力する準備ができている場合は、フォーマット文字列を%I 64 dと書いてlong longタイプの整数を出力する必要があります.
入門訓練円の面積
問題は、所定の円の半径rを記述し、円の面積を求める.入力フォーマット入力は、円の半径を表す整数rを含む.出力フォーマットは1行を出力し、実数を含み、小数点以下7桁を四捨五入し、円の面積を表す.説明:本題では、入力は整数ですが、出力は実数です.
実数出力の問題に対して、必ず実数出力の要求をはっきり見てください.例えば、本題の中で小数点の後7位を保留することを要求すると、あなたのプログラムは厳格に7位の小数を出力しなければなりません.出力が多すぎるか少なすぎる小数点の数はすべてだめで、間違いと見なされます.
実数出力の問題は特に説明がなければ,切り込みはすべて四捨五入で行う.
サンプル入力4サンプル出力50.2654825データ規模と所定1<=r<=10000.ヒント本題は精度に対する要求が高いので、πの値はより正確な値を取るべきであることに注意してください.定数を使用してπを表すことができます.例えば、PI=3.14159265358979323、PI=atan(1.0)*4などの数学式を使用してπを求めることもできます.
タイトル検索方法:Ctrl+F->タイトル名を入力->解答にナビゲートします.
入門訓練(詳細はアルゴリズム-ブルーブリッジカップ練習問題(1-1)を参照)
基礎練習(詳細はアルゴリズム-ブルーブリッジカップ練習問題(2-1)を参照)
基礎練習(詳細はアルゴリズム-ブルーブリッジカップ練習問題(2-2)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-1)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-2)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-3)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-4)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-5)を参照)
アルゴリズムトレーニング(詳細はアルゴリズム-ブルーブリッジカップ練習問題(3-6)を参照)
アルゴリズムの向上(詳細はアルゴリズム-ブルーブリッジカップ練習問題(4-1)を参照)
アルゴリズムの向上(詳細はアルゴリズム-ブルーブリッジカップ練習問題(4-2)を参照)
歴代試験問題(詳しくはアルゴリズム-ブルーブリッジカップ練習問題(5-1)を参照)
歴代試験問題(詳細はアルゴリズム-ブルーブリッジカップ練習問題(5-2)を参照)
入門訓練A+B問題
質問記述入力A,B,出力A+B.説明:「問題の説明」の部分では、試験問題の意味と、要求された目標が与えられます.入力フォーマット入力の最初の行には、A、Bを表すスペースで区切られた2つの整数が含まれます.説明:「入力フォーマット」は、プログラムをテストするときに、入力が一定に満たされるフォーマットを説明します.
問題を解くときは、与えられた入力が入力フォーマットの要求を満たしていると仮定する必要があります.そのため、入力フォーマットをチェックする必要はありません.余分なフォーマットチェックは逆効果になる可能性があります.プログラムエラーを使用します.
テストの時、システムは自動的に入力データをあなたのプログラムに入力して、あなたはいかなるヒントを与えることができません.例えば、入力時に「A、Bを入力してください」などとヒントを与えると不要で、これらの余分な出力はプログラムをエラーと判定します.
出力フォーマットA+Bの値を表す整数を含む1行を出力します.説明:「出力フォーマット」は、あなたのプログラムが結果を出力するときに満たさなければならないフォーマットです.
出力する時、あなたのプログラムはこのフォーマットの要求を満たさなければなりません.何の内容も少なくしてはいけません.何の内容も多くしてはいけません.コンテンツと出力フォーマットの要求が異なる場合、プロンプト情報、中間デバッグ情報、タイミング、統計情報などを出力したプログラムがエラーと判断されます.
サンプル入力12 45の説明:「サンプル入力」は、「入力フォーマット」の要件を満たす入力のセットを示す.
ここで与えられた入力は、あなたのプログラムをテストするための入力にすぎません.テストのとき、あなたのプログラムをテストするための入力も多くなります.
サンプル出力57は、「サンプル出力」が、「出力フォーマット」の要件を満たす出力のセットを与える例を示す.
サンプル出力の結果はサンプル入力と対応しているので、サンプルの入出力を使って簡単にプログラムをチェックすることができます.
特に、サンプル入出力が可能なプログラムは必ずしも正しいプログラムではなく、テスト時にサンプルデータに限らず多くのグループのデータでテストされることを指摘する.1つのプログラムがサンプルデータに合格した可能性がありますが、テスト時には0点しか得られません.このプログラムはサンプルのような特例の中でしか正しくなく、汎用性がないため、より多くのデータをテストするときにエラーが発生する可能性があります.
たとえば、本題では、入力が何であれ57と入力するプログラムを書くと、サンプルデータは正しいが、入力が1と2であっても、このプログラムは57を出力し、他のデータというプログラムは正しくない.
データ規模は、約−1000<=A,B<=10000とする.説明:「データ規模と約束」では、試験問題の主要パラメータの範囲が示されています.
この範囲は解題にとって非常に重要であり,異なるデータ範囲は試験問題を異なる解法で解決する必要がある.例えば本題で与えられたA,Bの範囲は大きくなく,整数(int)を用いて保存することができ,範囲がより大きく,intの範囲を超える場合は,他の方法を考慮して大数を保存する.
いくつかの範囲は便利な時に“問題の説明”の中で直接与えたので、問題をする時この範囲を見るだけではなくて、また問題の説明に注意します.
#include
int main()
{
int A, B;
scanf("%d%d", &A, &B);
printf("%d", A+B);
return 0;
}
// Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Main
{
public static void main(String[] args) throws IOException
{
args = new BufferedReader(new InputStreamReader(System.in)).readLine().split(" ");
System.out.println(Integer.parseInt(args[0])+Integer.parseInt(args[1]));
}
}
入門訓練Fibonacci数列
問題記述Fibonacci数列の繰返し式は、Fn=Fn-1+Fn-2であり、F 1=F 2=1である.
nが比較的大きい場合,Fnも非常に大きく,Fnを10007で割った残数がどれだけあるかを知りたい.
入力フォーマット入力には整数nが含まれます.出力フォーマットは、Fnが10007で除算された残数を表す整数を含む行を出力します.説明:本題では、答えはFnを10007の余数で割ることを要求するので、私たちはこの余数を算出することができればいいだけで、先にFnの正確な値を計算する必要はなく、計算の結果を10007で除算して余数を取り、直接余数を計算するのは先に原数を算出してから余剰を取るより簡単であることが多い.
サンプル入力10サンプル出力55サンプル入力22サンプル出力7704データ規模と約1<=n<=1000000.
#include
main()
{
unsigned long s=0,f1=1,f2=1,f3=1,n=0;
scanf("%d",&n);
if(n>2)
for(s=3;s<=n;s++)
{
f3=(f2+f1)%10007;
f1=f2;
f2=f3;
}
printf("%d",f3);
return 0;
}
// C
#include
#include
#define MOD 10007
#define MAXN 1000001
int n, i, F[MAXN];
int main()
{
scanf("%d", &n);
F[1] = 1;
F[2] = 1;
for (i = 3; i <= n; ++i)
F[i] = (F[i-1] + F[i-2]) % MOD;
printf("%d
", F[n]);
return 0;
}
// Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String s=reader.readLine();
int n=Integer.valueOf(s);
int f1=1,f2=1,f3=0;
if(n<3){
System.out.print("1");
return;}
for(int i=3;i<=n;i++)
{if(f1>10007)f1=f1%10007;
if(f2>10007)f2=f2%10007;
f3=f1+f2;
f1=f2;
f2=f3;
}
System.out.print(f3%10007);
}
}
入門訓練シーケンスの和を求める
問題の説明は1+2+3+...+nの値を求める.入力フォーマット入力には整数nが含まれます.出力フォーマットは、1+2+3+...+nの値を表す整数を含む行を出力します.サンプル入力4サンプル出力10サンプル入力100説明:いくつかの試験問題では、より良い問題を解決するために複数のサンプル入力出力が与えられます.
一般的に、これらのサンプルはすべてテストに合格する必要がありますが、これらのサンプルデータのセットが正しいわけではありません.プログラムが完全に正しいわけではありません.潜在的なエラーは、スコアが低い可能性があります.
サンプル出力5050データ規模は、約1<=n<=10000000とする.説明:ここのデータ規模に注意してください.
この問題の直接的な考え方は、ループを直接使用して累積することですが、データの規模が大きい場合、このような「暴力」の方法はタイムアウトを招くことが多いです.この時、他の方法を考えなければなりません.あなたのプログラムの入力として10000000を使用すると、あなたのプログラムは所定の時間内に実行できるかどうか試してみてください.
この問題のもう一つの注意すべき点は、答えの大きさがあなたの言語のデフォルトの整数(int)の範囲内ではないことです.整数を使用して結果を保存すると、結果が間違ってしまいます.
C++またはC言語を使用してprintfを使用して結果を出力する準備ができている場合は、フォーマット文字列を%I 64 dと書いてlong longタイプの整数を出力する必要があります.
#include
main()
{
long long n,s=0;
scanf("%I64d",&n);
s=(1+n)*n/2;
printf("%I64d",s);
return 0;
}
// C
#include
int main()
{
int n;
long long ret = 0, tmp;
scanf("%d", &n);
tmp = n;
printf("%I64d", (1+tmp) * tmp / 2);
return 0;
}
// Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String args[]) throws NumberFormatException, IOException{
BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
long i = Integer.parseInt(strin.readLine());
long sum = (1+i)*i/2;
System.out.println(sum);
}
}
入門訓練円の面積
問題は、所定の円の半径rを記述し、円の面積を求める.入力フォーマット入力は、円の半径を表す整数rを含む.出力フォーマットは1行を出力し、実数を含み、小数点以下7桁を四捨五入し、円の面積を表す.説明:本題では、入力は整数ですが、出力は実数です.
実数出力の問題に対して、必ず実数出力の要求をはっきり見てください.例えば、本題の中で小数点の後7位を保留することを要求すると、あなたのプログラムは厳格に7位の小数を出力しなければなりません.出力が多すぎるか少なすぎる小数点の数はすべてだめで、間違いと見なされます.
実数出力の問題は特に説明がなければ,切り込みはすべて四捨五入で行う.
サンプル入力4サンプル出力50.2654825データ規模と所定1<=r<=10000.ヒント本題は精度に対する要求が高いので、πの値はより正確な値を取るべきであることに注意してください.定数を使用してπを表すことができます.例えば、PI=3.14159265358979323、PI=atan(1.0)*4などの数学式を使用してπを求めることもできます.
#include
#include
#define PI atan(1.0)*4
main()
{
int r=0;
double s=0;
scanf("%d",&r);
s=PI*r*r;
printf("%.7f",s);
return 0;
}
// C
#include
#include
int main()
{
int r;
double s, PI;
scanf("%d", &r);
PI = atan(1.0) * 4;
s = PI * r * r;
printf("%.7lf", s);
return 0;
}
// Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
70 71 public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BigDecimal bg = new BigDecimal(bf.readLine());
BigDecimal value = bg.multiply(bg.multiply(new BigDecimal(Math.PI))).setScale(7,BigDecimal.ROUND_HALF_UP);
System.out.println(value);
}
}