0xzhang的博客

OJ常见输入格式

· 0xzhang
序号 输入数据类型 行数 每行数据数 数据分隔符
1 整型数 unknown 2 space
2 首行 2 space
3 末行数据均为0 2 space
4 末行为0 行首 space
5 首行 行首 space
6 unknown 行首 space
7 unknown unknown space
8 字符串 1 首行 space
9 unknown unknown space
10 unknown unknown ,

1 两数求和,未知行数§

输入描述:

输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。

输出描述:

输出a+b的结果。

输入例子:

1 5 10 20

输出例子:

6 30

#include <iostream>
using namespace std;

int main()
{
    int a,b;
    // scanf("%d%d",&a,&b)!=EOF
    while(cin>>a>>b){
        cout << a+b << endl;
    }
    
    return 0;
}

2 两数求和§

输入描述:

输入第一行包括一个数据组数t(1 <= t <= 100)。 接下来每行包括两个正整数a,b(1 <= a, b <= 10^9)。

输出描述:

输出a+b的结果。

输入例子:

2 1 5 10 20

输出例子:

6 30

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int a,b;
        cin>>a>>b;
        cout<<a+b<<endl;
    }
}

3 两数求和,末行全0§

输入描述:

输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入。

输出描述:

输出a+b的结果。

输入例子:

1 5 10 20 0 0

输出例子:

6 30

#include<iostream>
using namespace std;

int main()
{
    int a,b;
    while(cin>>a>>b)
    {
        if(!a&&!b) return 0;
        cout << a+b << endl;
    }
}

4 数据求和,末行为0§

输入描述:

输入数据包括多组。 每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100),n为0的时候结束输入。 接下来n个正整数,即需要求和的每个正整数。

输出描述:

每组数据输出求和的结果。

输入例子:

4 1 2 3 4 5 1 2 3 4 5 0

输出例子:

10 15

#include <iostream>
using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        if(!n) return 0;
        int sum=0;
        while(n--)
        {
            int x;
            cin>>x;
            sum+=x;
        }
        cout<<sum<<endl;
    }
}

5 数据求和§

输入描述:

输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。 接下来t行, 每行一组数据。 每行的第一个整数为整数的个数n(1 <= n <= 100)。 接下来n个正整数, 即需要求和的每个正整数。

输出描述:

每组数据输出求和的结果。

输入例子:

2 4 1 2 3 4 5 1 2 3 4 5

输出例子:

10 15

#include<iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int x;
        cin>>x;
        int sum=0;
        while(x--)
        {
            int t;
            cin>>t;
            sum+=t;
        }
        cout << sum << endl;
    }
}

6 数据求和,未知行数§

输入描述:

输入数据有多组, 每行表示一组输入数据。 每行的第一个整数为整数的个数n(1 <= n <= 100)。 接下来n个正整数, 即需要求和的每个正整数。

输出描述:

每组数据输出求和的结果。

输入例子:

4 1 2 3 4 5 1 2 3 4 5

输出例子:

10 15

#include <iostream>
using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        int sum=0;
        while(n--)
        {
            int t;
            cin>>t;
            sum+=t;
        }
        cout << sum << endl;
    }
}

7 数据求和,未知数目§

输入描述:

输入数据有多组, 每行表示一组输入数据。 每行不定有n个整数,空格隔开。(1 <= n <= 100)。

输出描述:

每组数据输出求和的结果。

输入例子:

1 2 3 4 5 0 0 0 0 0

输出例子:

6 9 0

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    string str;
    stringstream ss;
    while(getline(cin, str)){
        ss.str(str);
        int sum=0;
        int x;
        while(ss>>x){
            sum+=x;
        }
        cout<<sum<<endl;
        ss.clear();
    }
}

8 字符串排序§

输入描述:

输入有两行,第一行n。 第二行是n个空格隔开的字符串。

输出描述:

输出一行排序后的字符串,空格隔开,无结尾空格。

输入例子:

5 c d a bb e

输出例子:

a bb c d e

#include <iostream>
#include <map>
using namespace std;

int main()
{
    map<string, int> maps;
    int n;
    cin>>n;
    while(n--)
    {
        string str;
        cin>>str;
        maps[str]++;
    }
    for(const auto&x:maps){
        int t=x.second;
        while(t--) cout << x.first << " ";
    }
}

9 字符串排序,未知数目§

输入描述:

多个测试用例,每个测试用例一行。 每行通过空格隔开,有n个字符,n<100。

输出描述:

对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开。

输入例子:

a c bb f dddd nowcoder

输出例子:

a bb c dddd f nowcoder

#include <iostream>
#include <sstream>
#include <map>
using namespace std;

int main()
{
    map<string,int>maps;
    string str;
    stringstream ss;
    while(getline(cin,str)){
        ss.str(str);
        while(ss>>str) maps[str]++;
        for(const auto& x:maps){
            int t=x.second;
            while(t--) cout << x.first << " ";
        }
        cout << endl;
        
        ss.clear();
        maps.clear();
    }
}

10 字符串排序,逗号分隔§

输入描述:

多个测试用例,每个测试用例一行。 每行通过“,”隔开,有n个字符,n<100。

输出描述:

对于每组用例输出一行排序后的字符串,用“,”隔开,无结尾空格。

输入例子:

a,c,bb f,dddd nowcoder

输出例子:

a,bb,c dddd,f nowcoder

#include <iostream>
#include <map>
using namespace std;

int main()
{
    string str;
    map<string,int> maps;
    while(cin>>str)
    {
        string::size_type n = str.find(',');
        while(n!=string::npos){
            int pos=0;
            for(int i=0;i<str.size();++i){
                if(str[i]==','){pos=i;break;}
            }
            string cur=str.substr(0,pos);
            maps[cur]++;
            str=str.substr(pos+1);
            n = str.find(',');
        }
        maps[str]++;
        
        for(const auto& x:maps){
            int t=x.second;
            for(int i=0;i<t-1;++i) cout<<x.first<<",";
            if(x!=*(maps.crbegin())) cout<<x.first<<",";
            else cout<<x.first<<endl;
        }
        
        maps.clear();
    }
}

参考资料§

  1. OJ在线编程常见输入输出练习_牛客网 (nowcoder.com)