前言
以下是藍(lán)橋杯練習(xí)系統(tǒng)里Begin系列的題目
問(wèn)題描述
求1+2+3+...+n的值才避。
輸入格式
輸入包括一個(gè)整數(shù)n橱夭。
輸出格式
輸出一行,包括一個(gè)整數(shù)桑逝,表示1+2+3+...+n的值棘劣。
樣例輸入
4
樣例輸出
10
樣例輸入
100
樣例輸出
5050
數(shù)據(jù)規(guī)模與約定
1 <= n <= 1,000,000,000。
說(shuō)明:請(qǐng)注意這里的數(shù)據(jù)規(guī)模楞遏。
解析
其實(shí)剛看到這道題的時(shí)候覺(jué)得非常簡(jiǎn)單茬暇,就是一個(gè)等差數(shù)列求和的問(wèn)題,寫完代碼后就直接提交了橱健,結(jié)果發(fā)現(xiàn)只對(duì)了一半而钞,想了老半天才明白到底是為什么。原先的代碼是這樣的:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int fenmu = (1 + n) * n;
int result = fenmu / 2;
System.out.println(result);
}
}
改進(jìn)之后的代碼是這樣的:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigInteger n = scanner.nextBigInteger();
BigInteger fenmu = (n.add(BigInteger.valueOf(1))).multiply(n);
BigInteger result = fenmu.divide(BigInteger.valueOf(2));
System.out.println(result);
}
}
只是因?yàn)闆](méi)有注意到題目最后的要求拘荡,注意數(shù)據(jù)規(guī)模臼节。在此提醒一下自己。
問(wèn)題描述
給定圓的半徑r,求圓的面積网缝。
輸入格式
輸入包含一個(gè)整數(shù)r巨税,表示圓的半徑。
輸出格式
輸出一行粉臊,包含一個(gè)實(shí)數(shù)草添,四舍五入保留小數(shù)點(diǎn)后7位,表示圓的面積扼仲。
說(shuō)明:在本題中远寸,輸入是一個(gè)整數(shù),但是輸出是一個(gè)實(shí)數(shù)屠凶。
對(duì)于實(shí)數(shù)輸出的問(wèn)題驰后,請(qǐng)一定看清楚實(shí)數(shù)輸出的要求,比如本題中要求保留小數(shù)點(diǎn)后7位矗愧,則你的程序必須嚴(yán)格的輸出7位小數(shù)灶芝,輸出過(guò)多或者過(guò)少的小數(shù)位數(shù)都是不行的,都會(huì)被認(rèn)為錯(cuò)誤唉韭。
實(shí)數(shù)輸出的問(wèn)題如果沒(méi)有特別說(shuō)明夜涕,舍入都是按四舍五入進(jìn)行。
樣例輸入
4
樣例輸出
50.2654825
數(shù)據(jù)規(guī)模與約定
1 <= r <= 10000属愤。
提示
本題對(duì)精度要求較高女器,請(qǐng)注意π的值應(yīng)該取較精確的值。你可以使用常量來(lái)表示π住诸,比如PI=3.14159265358979323晓避,也可以使用數(shù)學(xué)公式來(lái)求π,比如PI=atan(1.0)*4只壳。
解析
因?yàn)檫@道題的核心在于正確使用四舍五入保留小數(shù),所以在這里簡(jiǎn)單介紹java四舍五入保留小數(shù)的幾種方法
// 方式一:
double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
// 方式二:
new java.text.DecimalFormat("#.00").format(3.1415926);
// #.00 表示兩位小數(shù) #.0000四位小數(shù) 以此類推…
// 方式三:
double d = 3.1415926;
String result = String.format("%.2f", d);
// %.2f %. 表示 小數(shù)點(diǎn)前任意位數(shù) 2 表示兩位小數(shù) 格式后的結(jié)果為f 表示浮點(diǎn)型暑塑。
//方法四:
Math.round(5.2644555 * 100) * 0.01d;
//String.format("%0" + 15 + "d", 23) 23不足15為就在前面補(bǔ)0
本題的代碼:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int r = scanner.nextInt();
double PI = 3.14159265358979323;
double temp = r * r * PI;
String result = String.format("%.7f", temp);
System.out.println(result);
}
}
問(wèn)題描述
Fibonacci數(shù)列的遞推公式為:Fn=Fn-1+Fn-2吼句,其中F1=F2=1。
當(dāng)n比較大時(shí)事格,F(xiàn)n也非常大惕艳,現(xiàn)在我們想知道,F(xiàn)n除以10007的余數(shù)是多少驹愚。
輸入格式
輸入包含一個(gè)整數(shù)n远搪。
輸出格式
輸出一行,包含一個(gè)整數(shù)逢捺,表示Fn除以10007的余數(shù)谁鳍。
說(shuō)明:在本題中,答案是要求Fn除以10007的余數(shù),因此我們只要能算出這個(gè)余數(shù)即可倘潜,而不需要先計(jì)算出Fn的準(zhǔn)確值绷柒,再將計(jì)算的結(jié)果除以10007取余數(shù),直接計(jì)算余數(shù)往往比先算出原數(shù)再取余簡(jiǎn)單涮因。
樣例輸入
10
樣例輸出
55
樣例輸入
22
樣例輸出
7704
數(shù)據(jù)規(guī)模與約定
1 <= n <= 1,000,000废睦。
解析,因?yàn)橐蟮氖荈n除以10007的余數(shù)养泡,所以沒(méi)有必要將F算出嗜湃,只需要分別將結(jié)果對(duì)10007取余即可,因?yàn)樾∮?0007的數(shù)即使取余了也是其自身澜掩。
本題的代碼如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int a[] = new int[num + 2];
a[1] = 1;
a[2] = 1;
for (int i = 3; i <= num; i++) {
a[i] = (a[i - 1] + a[i - 2]) % 10007;
}
System.out.println(a[num]);
}
}