- 入門訓練(詳見 算法-藍橋杯習題(1-1))
- 基礎練習(詳見 算法-藍橋杯習題(2-1))
- 基礎練習(詳見 算法-藍橋杯習題(2-2))
- 算法訓練(詳見 算法-藍橋杯習題(3-1))
- 算法訓練(詳見 算法-藍橋杯習題(3-2))
- 算法訓練(詳見 算法-藍橋杯習題(3-3))
- 算法訓練(詳見 算法-藍橋杯習題(3-4))
- 算法訓練(詳見 算法-藍橋杯習題(3-5))
- 算法訓練(詳見 算法-藍橋杯習題(3-6))
- 算法提高(詳見 算法-藍橋杯習題(4-1))
- 算法提高(詳見 算法-藍橋杯習題(4-2))
- 算法提高(詳見 算法-藍橋杯習題(4-3))
- 歷屆試題(詳見 算法-藍橋杯習題(5-1))
- 歷屆試題(詳見 算法-藍橋杯習題(5-2))
/* 入門訓練 A+B問題 問題描述 輸入A、B,輸出A+B。 說明:在“問題描述”這部分,會給出試題的意思,以及所要求的目標。 輸入格式 輸入的第一行包括兩個整數,由空格分隔,分別表示A、B。 說明:“輸入格式”是描述在測試你的程序時,所給的輸入一定滿足的格式。 做題時你應該假設所給的輸入是一定滿足輸入格式的要求的,所以你不需要對輸入的格式進行檢查。多余的格式檢查可能會適得其反,使用你的程序錯誤。 在測試的時候,系統會自動將輸入數據輸入到你的程序中,你不能給任何提示。比如,你在輸入的時候提示“請輸入A、B”之類的話是不需要的,這些多余的輸出會使得你的程序被判定為錯誤。 輸出格式 輸出一行,包括一個整數,表示A+B的值。 說明:“輸出格式”是要求你的程序在輸出結果的時候必須滿足的格式。 在輸出時,你的程序必須滿足這個格式的要求,不能少任何內容,也不能多任何內容。如果你的內容和輸出格式要求的不一樣,你的程序會被判斷為錯誤,包括你輸出了提示信息、中間調試信息、計時或者統計的信息等。 樣例輸入 12 45 說明:“樣例輸入”給出了一組滿足“輸入格式”要求的輸入的例子。 這里給出的輸入只是可能用來測試你的程序的一個輸入,在測試的時候,還會有更多的輸入用來測試你的程序。 樣例輸出 57 說明:“樣例輸出”給出了一組滿足“輸出格式”要求的輸出的例子。 樣例輸出中的結果是和樣例輸入中的是對應的,因此,你可以使用樣例的輸入輸出簡單的檢查你的程序。 要特別指出的是,能夠通過樣例輸入輸出的程序並不一定是正確的程序,在測試的時候,會用很多組數據進行測試,而不局限於樣例數據。有可能一個程序通過了樣例數據,但測試的時候仍只能得0分,可能因為這個程序只在一些類似樣例的特例中正確,而不具有通用性,再測試更多數據時會出現錯誤。 比如,對於本題,如果你寫一個程序不管輸入是什么都輸入57,則樣例數據是對的,但是測試其他數據,哪怕輸入是1和2,這個程序也輸出57,則對於其他數據這個程序都不正確。 數據規模與約定 -10000 <= A, B <= 10000。 說明:“數據規模與約定”中給出了試題中主要參數的范圍。 這個范圍對於解題非常重要,不同的數據范圍會導致試題需要使用不同的解法來解決。比如本題中給的A、B范圍不大,可以使用整型(int)來保存,如果范圍更大,超過int的范圍,則要考慮其他方法來保存大數。 有一些范圍在方便的時候是在“問題描述”中直接給的,所以在做題時不僅要看這個范圍,還要注意問題描述。 */ #include <stdio.h> 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,其中F1=F2=1。 當n比較大時,Fn也非常大,現在我們想知道,Fn除以10007的余數是多少。 輸入格式 輸入包含一個整數n。 輸出格式 輸出一行,包含一個整數,表示Fn除以10007的余數。 說明:在本題中,答案是要求Fn除以10007的余數,因此我們只要能算出這個余數即可,而不需要先計算出Fn的准確值,再將計算的結果除以10007取余數,直接計算余數往往比先算出原數再取余簡單。 樣例輸入 10 樣例輸出 55 樣例輸入 22 樣例輸出 7704 數據規模與約定 1 <= n <= 1,000,000。 */ #include <stdio.h> 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 <stdlib.h> #include <stdio.h> #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\n", 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 <= 1,000,000,000。 說明:請注意這里的數據規模。 本題直接的想法是直接使用一個循環來累加,然而,當數據規模很大時,這種“暴力”的方法往往會導致超時。此時你需要想想其他方法。你可以試一試,如果使用1000000000作為你的程序的輸入,你的程序是不是能在規定的上面規定的時限內運行出來。 本題另一個要值得注意的地方是答案的大小不在你的語言默認的整型(int)范圍內,如果使用整型來保存結果,會導致結果錯誤。 如果你使用C++或C語言而且准備使用printf輸出結果,則你的格式字符串應該寫成%I64d以輸出long long類型的整數。 */ #include<stdio.h> main() { long long n,s=0; scanf("%I64d",&n); s=(1+n)*n/2; printf("%I64d",s); return 0; } /* //參考代碼C語言 #include <stdio.h> 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,表示圓的半徑。 輸出格式 輸出一行,包含一個實數,四舍五入保留小數點后7位,表示圓的面積。 說明:在本題中,輸入是一個整數,但是輸出是一個實數。 對於實數輸出的問題,請一定看清楚實數輸出的要求,比如本題中要求保留小數點后7位,則你的程序必須嚴格的輸出7位小數,輸出過多或者過少的小數位數都是不行的,都會被認為錯誤。 實數輸出的問題如果沒有特別說明,舍入都是按四舍五入進行。 樣例輸入 4 樣例輸出 50.2654825 數據規模與約定 1 <= r <= 10000。 提示 本題對精度要求較高,請注意π的值應該取較精確的值。你可以使用常量來表示π,比如PI=3.14159265358979323,也可以使用數學公式來求π,比如PI=atan(1.0)*4。 */ #include <stdio.h> #include <math.h> #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 <stdio.h> #include <math.h> 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); } } */