codeforces-1284A-New Year and Naming

发布于 2020-01-18  637 次阅读


问题:

有两个序列,分别有n,和m个字符串(m, n <= 20)
有q次查询,每次查询一个整数cnt(cnt <= 1e5)
对于每次查询,分别取出第一个序列中第cnt个字符串和第二个序列中的字符串,
组合到一起输出。
如果cnt > n,m 
跳到序列的首部分继续数。

分析:

如题意....
#include <iostream>
#include <string>

using namespace std;

const int MAXN = 20+1;
string s1[MAXN], s2[MAXN];

int main()
{
    string L, R;
    int n, m, q, cnt;
    cin >> n >> m;
    for (int i = 0; i < n; i++)
        cin >> s1[i];
    for (int i = 0; i < m; i++)
        cin >> s2[i];

    cin >> q;
    while (q--)
    {
        cin >> cnt;
        L = (cnt%n == 0) ? s1[n-1] : s1[cnt % n - 1];
        R = (cnt%m == 0) ? s2[m-1] : s2[cnt % m - 1];
        cout << L + R << endl;
    }
} 

Simple And Clear