【洛谷】【試煉場】新手村總結+題解
阿新 • • 發佈:2019-01-05
【試煉場】新手村總結+題解
–你--谷–的--第–一--個–任--務
- P1000 超級瑪麗遊戲
難度:入門(普及減的難度應該是惡意評分吧)
考點:輸入輸出
程式碼:
#include <cstdio>
int main()
{
printf(" ********\n");
printf(" ************\n");
printf(" ####....#.\n");
printf(" #..###.....##....\n" );
printf(" ###.......###### ### ###\n");
printf(" ........... #...# #...#\n");
printf(" ##*####### #.#.# #.#.#\n");
printf(" ####*******###### #.#.# #.#.#\n" );
printf(" ...#***.****.*###.... #...# #...#\n");
printf(" ....**********##..... ### ###\n");
printf(" ....**** *****....\n");
printf(" #### ####\n");
printf(" ###### ######\n" );
printf("##############################################################\n");
printf("#...#......#.##...#......#.##...#......#.##------------------#\n");
printf("###########################################------------------#\n");
printf("#..#....#....##..#....#....##..#....#....#####################\n");
printf("########################################## #----------#\n");
printf("#.....#......##.....#......##.....#......# #----------#\n");
printf("########################################## #----------#\n");
printf("#.#..#....#..##.#..#....#..##.#..#....#..# #----------#\n");
printf("########################################## ############\n");
return 0;
}
- P1001 A+b Problem
難度:入門
考點:定義變數&&算術表示式
程式碼:
#include <cstdio>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d", a + b);
return 0;
}
- P1421 小玉買文具
難度:入門
考點:算術表示式
程式碼:
#include <cstdio>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d", (a * 10 + b) / 19);
return 0;
}
- P1425 小魚的游泳時間
難度:入門
考點:算術表示式
程式碼:
#include <cstdio>
int main()
{
int a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
printf("%d %d", ((c - a) * 60 + d - b) / 60, ((c - a) * 60 + d - b) % 60);
return 0;
}
–順--序–與--分–支
- P1422 小玉家的電費
難度:入門
考點:分支結構
程式碼:
#include <cstdio>
int main()
{
int n;
scanf("%d", &n);
if (n < 151)
{
printf("%.1f\n", n * 0.4463);
}
if (n > 150 && n < 401)
{
printf("%.1f\n", 150 * 0.4463 + (n - 150) * 0.4663);
}
if (n > 400)
{
printf("%.1f\n", 150 * 0.4463 + 250 * 0.4663 + (n - 400) * 0.5663);
}
return 0;
}
- P1085 不高興的津津
難度:入門
考點:分支結構
程式碼:
#include <cstdio>
int main()
{
int a[10], b[10], i, sum = 0, ans = 0;
for (i = 1; i <= 7; i++)
{
scanf("%d%d", &a[i], &b[i]);
a[i] = a[i] + b[i];
}
for (i = 1; i <= 7; ++i)
{
if (a[i] > 8 && a[i] > sum)
{
ans = i;
sum = a[i];
}
}
printf("%d\n", ans);
return 0;
}
- P1089 津津的儲蓄計劃
難度:入門
考點:分支結構
程式碼:
#include <cstdio>
int main()
{
int n, k, y = 0, x = 0;
for(int i = 1; i <= 12; i++)
{
scanf("%d", &n);
x = x + 300;
if(x < n)
{
printf("%d", -i);
return 0;
}
x = x - n;
k = x % 100;
y = y + x - k;
x = k;
}
printf("%d\n", x + y * 120 / 100);
return 0;
}
- P1909 買鉛筆
難度:入門
考點:分支結構
程式碼:
#include <cstdio>
int main()
{
int n, minn;
int a[5], b[5];
scanf("%d", &n);
for(int i = 1; i <= 3; i++)
{
scanf("%d%d", &a[i], &b[i]);
if (n % a[i] == 0)
{
a[i] = n / a[i] * b[i];
}
else
{
a[i] = (n / a[i] + 1) * b[i];
}
}
minn = min (a[1], a[2]);
minn = min (minn, a[3]);
printf("%d\n", minn);
}
–循--環–!--循–環--!–循--環–!
- P1008三連擊
難度:入門
考點:幾乎沒有
小技巧:發分理處每個數的個十百位,其中1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 = 362880
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45能判定數字是否重複
程式碼:
#include <stdio.h>
int main() {
int a, b, c;
int x[10];
int m, n, i;
for(a = 123; a <= 333; a++) {
b = a * 2;
c = a * 3;
x[1] = a % 10;
x[2] = a / 10 % 10;
x[3] = a / 100;
x[4] = b % 10;
x[5] = b / 10 % 10;
x[6] = b / 100;
x[7] = c % 10;
x[8] = c / 10 % 10;
x[9] = c / 100;
m = 1;
n = 0;
for(i = 1; i <= 9; i++)
m *= x[i];
for(i = 1; i <= 9; i++)
n += x[i];
if(m == 362880 && n == 45)
printf("%d %d %d\n", a, b, c);
}
}
- P1035 級數求和
難度:入門
考點:幾乎沒有
陷阱:容易超時
程式碼:
#include <cstdio>
using namespace std;
int main()
{
int k, n = 0;
scanf("%d", &k);
for(double sum = 0; sum <= k; n++,sum += 1.0 / n);
printf("%d", n);
//cout<<"AC";
return 0;
}
- P1423小魚在游泳
難度:入門
考點:幾乎沒有
程式碼:
#include <cstdio>
int main()
{
int ans = 0;
double yb = 2, x = 0, n;
scanf("%f", &n);
while(x < n)
{
ans++;
x = x + yb;
yb = yb * 0.98;
}
printf("%d\n", ans);
return 0;
}
- P1424 小魚的航程(改進版)
難度:入門
考點:幾乎沒有
程式碼:
#include<cstdio>
int main()
{
unsigned long long n, ans=0;
int x;
scanf("%d%lld", &x, &n);
for(int i = 0; i < n; i++)
{
if((x != 6) && (x != 7))
{
ans += 250;
}
if(x == 7)
{
x = 1;
}
else
{
x++;
}
}
printf("%lld\n", ans);
return 0;
}
- P1980 計數問題
難度:入門
考點:優化,模擬,字串,分離數位
程式碼:
#include <cstdio>
int main()
{
long long n, x, b, c, ans=0;
scanf("%lld%lld", &n, &x)
for (long long i = 1; i <= n; i++)
{
b = i;
while(b != 0)
{
c = b % 10;
b = b / 10;
if(c == x)
{
ans++;
}
}
}
printf("%lld\n", ans);
return 0;
}
–數--組–
- P1046 陶陶摘蘋果
難度:入門
考點:沒有
程式碼:
#include <cstdio>
using namespace std;
int a[20], n, ans;
int main()
{
for(int i = 1; i <= 10; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &n);
for(int i = 1; i <= 10; i++)
{
if (n + 30 >= a[i])
{
ans++;
}
}
printf("%d\n", ans);
return 0;
}
- P1047 校門外的樹
難度:入門
考點:線段樹
注意:較大的陣列要開到main函式外面!!!
程式碼:
#include <cstdio>
using namespace std;
int a[105];
int b[105];
int f[10005];
int main()
{
int l, n;
int sum = 0;
scanf("%d%d", &l, &n);
for(int i = 1; i <= n; i++)
scanf("%d%d", &a[i], &b[i]);
for(int i = 0; i <= l; i++)
{
f[i] = 1;
}
for(int i = 1; i <= n; i++)
{
for(int j = a[i]; j <= b[i]; j++)
{
f[j] = 0;
}
}
for(int i = 0; i <= l; i++)
{
if(f[i] > 0) {
sum += 1;
}
}
printf("%d\n", sum);
return 0;
}
- P1427 小宇的數字遊戲
難度:入門
考點:棧
程式碼:
#include <cstdio>
int main()
{
int i, a[101], ans = 0;
for(i = 0; ; i++)
{
ans++;
scanf("%d", &a[i])
if(a[i] == 0)
{
break;
}
}
for(i = ans - 2; i > 0; i--)
{
printf("%d ", a[i]);
}
printf("%d\n", a[0]);
return 0;
}
- P1428 小魚比可愛
難度:入門
考點:樹狀陣列
程式碼:
#include <cstdio>
int a[110], b[110], n;
int main() {
scanf("%n", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= i; j++) {
if (a[j] < a[i])
b[i]++;
}
}
for(int i = 1; i <= n; i++)