A
思路
简单博弈题,谁先面对1谁就输,因为面对1的时候只能划掉1。那么每个人每次优先划掉因数1,如果是奇数显然Bob赢,偶数Alice赢。
这道题证明我也不太清楚,猜了下结果
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
if(n&1) puts("Bob");
else puts("Alice");
return 0;
}
B
思路
这道题k只有3种情况0,1,2,N最大为100,那么就简单了
如果k=0,直接输出1~100
如果k=1,我们输出x0x的形式,x+0=x。x取2到101,但是注意有点坑点,当x为11的倍数的时候特殊处理,可以处理为xx(x+x)
如果k=2, 我们可以采取这样的做法,前面是x个i,把这x个i分成1个和x-1个i,后面是x-1位i加上个位i。详情见代码
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
int k,n;
cin>>k>>n;
if(k==0)
{
for(int i=1; i<=n; i++)
{
printf("%d\n",i);
}
}
else if(k==1)
{
for(int i=1; i<=n; i++)
{
if(i%11==0) printf("%d%d%d\n",i,i,i+i);
else printf("%d0%d\n",i,i);
}
}
else
{
int cnt=0;
bool flag=false;
//i的范围为1到9
for(int i=1; i<=9; i++)
{
//多少个i
//9*14>100, 可以给出正确答案
for(int j=3; j<=14; j++)
{
ll sum=0;
for(int k=1; k<=j; k++)
{
printf("%d",i);
if(k>1) sum=sum*10+i;
}
sum+=i;
printf("%lld\n",sum);
cnt++;
if(cnt==n)
{
flag=true;
break;
}
}
if(flag) break;
}
}
return 0;
}