【CPC】2021 IMWPC 多组输入参考文档与热身赛题解

笔者:YY同学

生命不息,代码不止。好玩的项目尽在GitHub



感谢大家支持本次 IMWPC,也祝愿大家在比赛中取得理想的成绩!!


多组输入(未给出组数)

题目不含有测试数据组数这一项,意味着可能是以一行为单位进行数据读入

  • C(未给出组数)
#include<stdio.h>

int main() {

	int n;
	while (scanf("%d", &n) != EOF) {
		printf("Result: %d\n", n);
	}

	return 0;
}
  • C++(未给出组数)
#include<iostream>
using namespace std;

int main() {

	int n;
	while (cin >> n) {
		cout << "Result: " << n << endl;
	}

	return 0;
}
  • Java(未给出组数)
import java.io.*;
import java.util.Scanner;

public class Main {
			
	public static void main(String[] args) throws IOException {
		
		Scanner input = new Scanner(System.in);
		
		while(input.hasNext()) {
			
			String a = input.next();
	    
	    	System.out.println("Result: " + a);
	    }
	    			
	}
}
  • Python(未给出组数,假如每行只读入两个数据)
# python, need more than 50 characters
while True:
    a,b = map(int, input().split())

    print("Result: " + str(a) + " " + str(b))

多组输入(给出组数)

题目有明确说明需要输入一个数字代表有几组数据,此时 n 代表数据的组数

  • C(给出组数)
#include<stdio.h>

int main() {

	int a, n;
	scanf("%d", &n);
	for(int k = 0; k < n; ++k){
		scanf("%d", &a);
		printf("Result: %d\n", a);
	}

	return 0;
}
  • C++(给出组数)
#include<iostream>
using namespace std;

int main() {

	int a,n;
	cin >> n;
	for(int k = 0; k < n; ++k ){
		cin >> a;
		cout << "Result: " << a << endl;
	}

	return 0;
}
  • Java(给出组数)
import java.io.*;
import java.util.Scanner;

public class Main {
			
	public static void main(String[] args) throws IOException {
		
		Scanner input = new Scanner(System.in);
		
		int n = input.nextInt();
		
		for(int k = 0; k < n; ++k) {
			
			String a = input.next();
	    
	    	System.out.println("Result: " + a);
	    }
	    			
	}
}
  • Python(给出组数,假如每组一次只读入两个数据)
# python, need more than 50 characters
n = int(input())
for i in range(0,n):
    a,b = map(int, input().split())

    print("Result: " + str(a) + " " + str(b))

热身赛A题 - Print A+B

题目

说明:本题题解包含 C、C++、Python 和 Java

  • C
// C
#include <stdio.h>

signed main()
{
    int a, b;
    scanf("%d%d", &a, &b);
    printf("%d", a + b);
    return 0;
}
  • C++ 11
// C++
#include <iostream>
using namespace std;

signed main()
{
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}
  • Python 3.5
# python, need more than 50 characters
a,b=map(int,input().split())
print(a+b)
  • Java(注意 Java 的 class 名字必须使用 Main !!!否则可能会 CE)
// java
import java.io.*;
import java.util.Scanner;

public class Main {
			
	public static void main(String[] args) throws IOException {
		
		Scanner input = new Scanner(System.in);
		
	    int a = input.nextInt();
	    int b = input.nextInt();
	    
	    System.out.println(a+b);
	    			
	}
}

热身赛B题 - Calculate Fibonacci Numbers

题目

说明:因空间有限,本题仅放 C++ 的题解

// C++
#include <iostream>
using namespace std;

int fib(int r) {
    if (r == 0) { return 0; }
    else if (r == 1 || r == 2) { return 1; }
    else { return fib(r - 1) + fib(r - 2); }
}

signed main()
{
    int num;
    cin >> num;
    cout << fib(num) << endl;
    return 0;
}

热身赛C题 - What’s the mass of Molecule

题目

说明:因空间有限,本题仅放 C++ 11 5.3.0 的题解

// C++
#include <iostream>
#include <string>
#include <cstdlib>
#include <iomanip>
using namespace std;

double scores[200];

int main()
{
    scores['C'] = 12.01;
    scores['H'] = 1.008;
    scores['O'] = 16.00;
    scores['N'] = 14.01;
    int n;
    int i, j;
    int curNum;
    int len;;
    double sum = 0;
    string s;
    cin >> n;

    while (n--)
    {
        sum = 0;
        cin >> s;
        len = s.length();
        for (i = 0; i < len;)
        {
            if (!isdigit(s[i]))
            {
                if (i + 1 < len && !isdigit(s[i + 1]))
                {
                    sum += scores[s[i]];
                    i++;
                }
                else if (i + 1 < len && isdigit(s[i + 1]))
                {
                    for (j = i + 1; j < len && isdigit(s[j]); ++j)
                        ;

                    curNum = stoi(s.substr(i + 1, j - (i + 1)));
                    sum += curNum * scores[s[i]];
                    i = j;
                }
                else
                {
                    sum += scores[s[i]];
                    i++;
                }
            }
        }

        cout << fixed << setprecision(3) << sum << endl;
    }

    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值