1. 程式人生 > >【洛谷】【試煉場】新手村總結+題解

【洛谷】【試煉場】新手村總結+題解

【試煉場】新手村總結+題解

–你--谷–的--第–一--個–任--務

  1. 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; }
  1. P1001 A+b Problem

難度:入門

考點:定義變數&&算術表示式

程式碼:

#include <cstdio>
int main()
{
    int a, b;
    scanf("%d%d", &a, &b);
    printf("%d", a + b);
    return 0;
}
  1. P1421 小玉買文具

難度:入門

考點:算術表示式

程式碼:

#include <cstdio>
int main()
{
    int a, b;
    scanf("%d%d", &a, &b);
    printf("%d", (a * 10 + b) / 19);
    return 0;
}
  1. 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;
}

–順--序–與--分–支

  1. 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;
}
  1. 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;
}
  1. 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;
}
  1. 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);
}

–循--環–!--循–環--!–循--環–!

  1. 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);
    }
}
  1. 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;
}
  1. 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;
}
  1. 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;
}
  1. 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;
}

–數--組–

  1. 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;
}
  1. 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;
}
  1. 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;
}
  1. 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++)