题意:
给你一个 n,按字典序输出 n 个单身妹子滴QQ号。不能重复,不能不是QQ号。如果不过就多提交几次碰碰运气。
数据范围:
1 ≤ n ≤ 5
思路:
签到题。需要满足:
1.输入的n个字符串的大小保证是QQ号长度的大小。QQ号长度一般为9~10;
2.输入的保证是数字字符。字符0-9;
3.依次输入的n个字符串保证是按字典序从小到大的。
4.ok,机智的你们一定都想到了上面的条件并且正确地写出来。但是呢,出题人为了增加题目的趣味性 and AC的不确定性,当上述3个条件都满足时,所以还是有 2/3的概率WA的。多交几次就行啦。所以该题其实是个交互题。
Code:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define x first
#define y second
#define int long long
typedef pair<int, int>PII;
const int N = 100010, M = 2 * N;
void solve()
{
int n;
cin >> n;
for(int i = 1;i<=n;i++)
{
string s(10, (char)('0' + i));
cout << s << endl;
}
}
signed main()
{
int t = 1;
//cin >> t;
while (t--)
{
solve();
}
return 0;
}
学长写的SPJ,先摆这回头学习学习:
#include "testlib.h"
#include <iostream>
using namespace std;
string a[10];
int main(int argc, char* argv[])
{
setName("Interactor X2");
registerInteraction(argc, argv);
rnd.setSeed(time(NULL));
int n = rnd.next(1000);
n = n % 5 + 1; // 产生 1 ~ 5 的随机数
cout << n << endl;
for(int i = 1; i <= n; i ++) cin >> a[i];
int flag = 1;
string res = "Please try again";
for(int i = 1; i <= n; i++)
{
if(a[i].size() < 8 || a[i].size() > 11)
{ // 如果QQ号的长度不合法 WA
flag = 0;
res = "You lied to me.";
break;
}
for(auto &x : a[i])
{
if(x < '0' || x > '9')
{ // 如果输出有非数字的字符 WA
flag = 0;
res = "You lied to me.";
}
}
if(i >= 2 && a[i] <= a[i - 1])
{ // 如果没严格按字典序从小到大输出 WA
flag = 0;
res = "Please read the question carefully.";
break;
}
}
int h = rnd.next(1000);
if(h % 3) flag = 0; // 如果输出满足题意,也有 2/3 的概率 输出 WA
if (flag) {
string s = "Thank You!";
quitf(_ok, s.c_str());
}
else
quitf(_wa, res.c_str());
return 0;
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
吐槽:这题好有意思,运气也是实力的一部分不是没有道理的说。