1. 程式人生 > >藍橋杯練習系統(入門練習)

藍橋杯練習系統(入門練習)

1. 問題描述

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>
int main (void)
{
	int a=1,b=1,c,n,m;
	scanf ("%d",&n);
	c=a+b;
	if (n>=3) 
		for (m=3;m<n;m++)
			{
				a=b;
				b=c;
				c=a+b;
			}
	else
		c=1;
	c=c%10007;	
	printf ("%d",c);
	return 0;
}
注意:
1.這是我的程式碼,就是算出數列中相應項並取餘,可就是錯了。是目前唯一一道不知道為何錯的。

2.

問題描述 給定圓的半徑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>
int main (void)
//double .7lf return
{
	double PI=atan(1.0)*4;
	double s;
	int r;
	scanf ("%d",&r);
	s=PI*r*r;
	printf ("%.7lf\n",s);
	return 0;//crazy
} 
注意:
1.double是C語言的一個關鍵字,代表雙精度浮點型。佔8 個位元組(64位)記憶體空間。其數值範圍為1.7E-308~1.7E+308,雙精度完全保證的有效數字是15位,16位只是部分數值有保證。可以用格式化輸入輸出語句scanf和printf進行double型別的輸入輸出,格式化字元為%lf。
定義
double a;
scanf("%lf", &a);
進行輸入。
prinf("%lf",a);
進行輸出
2.double PI=atan(1.0)*4精確的圓周率 #include <math.h>
3.printf ("%.7lf\n",s)七位小數
4.從這道題開始我發現return 0怎麼都不能少。

3.

問題描述 求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>
int main (void)
//long long 長度 
{
	long long n,s;
	scanf ("%d",&n);
	s=((1+n)*n)/2;
	printf ("%I64d\n",s);
	return 0;
}
注意:

1.關於longlong 

http://blog.csdn.net/qianbitou000/article/details/51939055

4.

問題描述 輸入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的範圍,則要考慮其他方法來儲存大數。

有一些範圍在方便的時候是在“問題描述”中直接給的,所以在做題時不僅要看這個範圍,還要注意問題描述。

提示

本題的C++原始碼如下:

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     int a, b;
  6.     cin >> a >> b;
  7.     cout << a + b;
  8.     return 0;
  9. }

本題的C原始碼如下:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a, b;
  5.     scanf("%d%d"&a, &b);
  6.     printf("%d", a+b);
  7.     return 0;
  8. }

本題的Java原始碼如下:

  1. import java.util.*;
  2. public class Main
  3. {
  4.     public static void main(String args[])
  5.     {
  6.         Scanner sc = new Scanner(System.in);
  7.         Integer a = sc.nextInt();
  8.         Integer b = sc.nextInt();
  9.         System.out.println(+ b);
  10.     }
  11. }

說明:要答題,請點選頁面上方的“提交此題”按鈕,頁面將跳轉到提交程式碼的頁面,選擇好你的編譯語言,將你的編寫好的程式碼貼上到程式碼框中,再點選“提交答案”即可。

你的答案提交給系統後系統會自動對你的程式碼進行判分,並跳轉到結果的列表裡面,你可以直接從列表中看到你提交的程式碼的狀態,一般幾秒鐘後就可以看到判分的結果。

本題作為第一題,在提示中已經分別給了C++和Java的程式碼,你可以直接把這個程式碼拷貝過去作為自己的程式碼提交。

請特別注意,Java的主類名必須是Main。

#include<stdio.h>
int main (void)
{
	int a,b;
	scanf ("%d%d",&a,&b);
	printf ("%d",a+b);
	return 0;
} 
這道題無FUCK說