Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
在[量产型能力者计划]和[绝对能力者进化计划]中,学院都市利用御坂美琴的体细胞总共制作了20001个克隆个体。她们的个体编号分别为00001-20001。其中[00001,20000]号被称为"SISTER"(御坂妹妹) ,20001号被称为 "LastOrder"(最后之作)。
现在给你一个御坂的个体编号,请你判断她是"SISTER" 还是"LastOrder".
Input
输入一个正整数 id 表示御坂的个体编号 ( 1 <= id <= 20001 )。
输入数据没有前导零。
Output
根据题意输出"SISTER" 或是 "LastOrder"。 (引号不输出)
Sample Input
10086
Sample Output
SISTER
Hint
Source
lxw
#include
using namespace std;
int main()
{
int n;
scanf("%d",&n);
if(n==20001)
{
printf("LastOrder\n");
}
else
{
printf("SISTER\n");
}
return 0;
}
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
「初春饰利」 是御坂美琴的好朋友,在风纪委员中负责通信与情报管理工作。她很擅长密码破译等骇客工作,曾击败许多网络黑客入侵“某个系统”的挑战,是超天才的黑客,也是都市传说中“守护神(Gatekeeper)”的正体,但她本人并不知晓。
但是某一天,御坂美琴给了初春一个密码。初春发现这个密码实在是太复杂了,完全找不出任何的设计规律。经过认真分析后,初春发现密码中包含且仅包含大写字母和数字,她决定先把这些大写字母和数字分离开再继续寻找规律。
Input
输入数据共两行。
第一行输入一个正整数 len 表示字符串的长度。 (2 <= len <= 100)
第二行输入一个长度为 len 包含且仅包含大写字母和数字的字符串。
Output
第一行输出字符串中出现的大写字母。
第二行输出字符串中出现的数字。
(按在原串中出现的顺序输出,已经输出过的字符若再次出现仍需要输出)
Sample Input
18 ZXC741ASD852QWE963
Sample Output
ZXCASDQWE 741852963
Hint
Source
lxw
#include
using namespace std;
int main()
{
int n;
scanf("%d",&n);
getchar();
char a[1100],b[1100],c[1100];
int count=0,flag=0;
gets(a);
for(int i=0;i='A'&&a[i]<='Z')
{
b[count++]=a[i];
}
else
{
c[flag++]=a[i];
}
}
b[count]='\0';
c[flag]='\0';
printf("%s\n",b);
printf("%s\n",c);
return 0;
}
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
「佐天泪子」是超过level 5级别的强者(误),人称「泪爷」。泪爷的衣服各式各样,这种超能力被誉为「海澜之家」。
一天,泪爷准备和御坂美琴、初春饰利一起出去吃饭,她打开了自己的衣柜(启动「海澜之家」),想要挑选一件合适的衣服出门。
衣柜里总共有 N 件衣服依次排列,第 i 件衣服的编号为 i。
第 i 件衣服有它的美观值 ai 和当前的穿戴次数 bi,每件衣服的优先值为 ai / (bi+1) ,向下取整 。不过泪爷和[初春饰利]关系非常好,初春喜欢编号为素数的衣服,所以如果某件衣服的编号为素数,那么泪爷会把这件衣服的优先值翻倍,泪爷想知道这 N 件衣服的优先值分别是多少。
Input
第一行输入一个正整数 N。(1<= N <=100)
接下来N行,每行输入两个正整数 ai,bi 。(0 <= ai , bi<= 100)
Output
输出一行,包括 N 个整数,第 i 个整数表示第 i 件衣服的优先值。
Sample Input
5 8 2 1 1 4 3 10 0 5 1
Sample Output
2 0 2 10 4
Hint
Source
lxw
#include
using namespace std;
struct node
{
int ai;
int bi;
int youxian;
}s[1100];
int main()
{
int n,i,k;
scanf("%d",&n);
for( i=1;i<=n;i++)
{
scanf("%d %d",&s[i].ai,&s[i].bi);
for( k=2;k
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
「白井黑子」 是御坂美琴的舍友,同时也是御坂美琴的超级迷妹,平时称呼美琴为"姐姐大人"。为了庆祝和美琴同寝一个月,白井黑子订购了一些“ 电脑配件 ”。但是御坂美琴接了送货员电话,在一番追问后事情败露。
白井黑子决定下次买“电脑配件”的时候,要和送货员商量好接头暗号,接头暗号是一个函数。
白井黑子定义了一个函数 F(x, y) :
当 y 不等于0时,返回 F(x, y-1)+F(x-1, y-1)。
当 y 等于0时,返回 x+1。
黑子要求送货员说一个 x, y ,然后自己回答 F(x, y) 。
Input
一行两个整数分别表示x, y。 (0<=x,y<=15)
Output
一个整数表示F(x, y)
Sample Input
3 5
Sample Output
48
Hint
Source
lxw
#include
using namespace std;
int f(int x,int y)
{
int res=0;
if(y!=0)
{
res=f(x,y-1)+f(x-1,y-1);
}
else
{
res=x+1;
}
return res;
}
int main()
{
int x,y;
scanf("%d %d",&x,&y);
int arr;
arr=f(x,y);
printf("%d\n",arr);
return 0;
}
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
「御坂美琴」在学园都市中仅有的七名超能力者(Level 5)中排名第三。最常用的招式是「超电磁炮(Railgun)」,但是她最后的绝招是[真正的落雷]。
一天,御坂美琴来到一片n*m的空地上测试落雷的威力,首会她会选择释放的威力K ,然后选择释放的中心坐标(x,y) 。 所有距离中心坐标(x,y)距离小于等于 K 的空地全部被烧焦。烧焦的空地用 '*' 表示,未烧焦的空地用 '.' 表示,请你输出落雷后空地的状态。御坂美琴觉得这十分简单,所以请你千万不要想得太复杂。
御坂美琴能够控制好自己的能力,所以落雷的攻击范围保证不会超出空地。
Input
输入五个整数n , m, x , y , K 分别表示空地的大小、落雷的释放中心坐标和落雷的威力。
(1 <= n,m,x,y <= 300, 0 <= k <= 300)
Output
n 行 m 列的字符矩阵。
Sample Input
10 10 5 4 3
Sample Output
.......... ...*...... ..***..... .*****.... *******... .*****.... ..***..... ...*...... .......... ..........
Hint
两点间的距离:两点的横坐标之差+两点的纵坐标之差。
例如(3,5)与(7,8) 之间的距离为:|3-7|+|5-8| = 7
Source
lxw
#include
using namespace std;
int main()
{
int n,m,x,y,k;
char st[500][500];
memset(st,'.',sizeof(st));
scanf("%d%d%d%d%d",&n,&m,&x,&y,&k);
x-=1,y-=1;
for(int i=0;i
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
御坂美琴最喜欢「呱太」了,尽管她自己从来不承认。
一天御坂美琴在隔壁商店发现了新上架的呱太,作为[常盘台中学]的大小姐,她有足够多的钱把所有的呱太全部买下来。但是她现在只带了 X 元钱,美琴决定先买尽量多的呱太,如果还有剩余的呱太,那么她就再回去拿钱买剩余的呱太。她想知道现在最多能先买下多少呱太。
商店里共有 N 个呱太,第 i 个的价格为 vi 元。
Input
第一行输入一个正整数N,X(1<=N<=100 , 1 <= X <= 1000000)
第二行输入 N 个正整数,第 i 个正整数表示第 i 个呱太的价格 vi。(1 <= vi <= 9000)
Output
一个正整数,表示现在最多能先买下多少个呱太。
Sample Input
5 10 7 2 5 3 1
Sample Output
3
Hint
Source
lxw
#include
using namespace std;
int main()
{
int n,x;
scanf("%d %d",&n,&x);
int a[110],t;
for(int i=0;ia[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
int count=0;
for(int i=0;i=a[i])
{
x=x-a[i];
count++;
}
else
{
break;
}
}
printf("%d\n",count);
return 0;
}
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
一天御坂美琴、白井黑子、初春饰利、佐天泪子四个人在一起玩游戏,游戏规则是给一个 N*M 的方格矩阵,矩阵中有一些数字,四个人依次取数字,每次可以取走一个小方格内的数字,每个方格最多被取一次。当所有数字被取完时游戏结束,每个人的最终得分是其所取的数字之和。
每个人都想要使自己的得分尽可能多,那么你知道游戏结束后她们每个人的得分分别是多少吗?
Input
第一行输入两个正整数N,M(1<=N, M<=10)。
接下来输入一个N行M列的数字矩阵, 小格子内数字的取值范围为[1,1000]。
Output
输出一行包括4个整数,分别表示御坂美琴、白井黑子、初春饰利、佐天泪子的得分。
Sample Input
2 3 2 2 3 4 4 1
Sample Output
6 5 3 2
Hint
Source
lxw
#include
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int n,m;
int data[50][50];
int a[1000];
int o=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
scanf("%d",&data[i][j]);
a[++o]=data[i][j];
}
}
sort(a+1,a+1+o,cmp);
int b[1000],c[1000];
int p=0,q=0;
int a1=0,a2=0,a3=0,a4=0;
bool vis[1000];
memset(vis,false,sizeof(vis));
for(int i=1;i<=o;i++)
{
if(i%2)
b[++p]=a[i];
else
c[++q]=a[i];
}
for(int i=1;i<=p;i++)
{
if(i%2)
a1+=b[i];
else
a3+=b[i];
}
for(int i=1;i<=q;i++)
{
if(i%2)
a2+=c[i];
else
a4+=c[i];
}
printf("%d %d %d %d\n",a1,a2,a3,a4);
return 0;
}
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
学园都市仅有的七名超能力者(Level 5)排名第一位,能力为“矢量操作”,代号「一方通行(Accelerator)」。
某天,「最后之作」自己去商场玩耍,很晚还没有回来。「一方通行」很担心于是决定去找最后之作。
商场可以大体看作一个 N*M 的矩形,墙壁和遮挡物用 '*' 表示,空白位置用 '.' 表示,一方通行和最后之作的起始位置分别用 'A' 和 'L' 表示。(显然,他们两个人的起始位置是不可能有遮挡物的)
两人总共最多进行 K 次移动,每次移动可以用两个字符串 name 和 direction 来表示。
如果 name 为"Accelerator",表示本次是「一方通行」移动。
如果 name 为"LastOrder",表示本次是「最后之作」移动。
direction 可能为"up"或"down"或"left"或"right",分别表示向上、向下、向左、向右移动一个单位长度。
如果本次要移动的位置在商场外或者存在遮挡物,那么将不移动。如果两人中途已经相遇(坐标重合),那么之后的所有移动全部取消。
数据保证「一方通行」和「最后之作」会相遇,如果最后是「一方通行」走向「最后之作」请输出"Accelerator",如果是「最后之作」走向「一方通行」请输出"MisakaMisaka"。然后输出两人实际总共移动了多少步。
Input
首先输入两个正整数 N, M表示商场的大小。(2 <= N, M <= 100)
然后输入一个 N 行 M 列的字符矩阵。
下一行输入一个正整数 K,表示两人总共最多进行 K 次移动。 ( 1 <= K <= 100)
接下来 K 行,每行包括两个字符串,分别表示移动的角色和移动的方向。
Output
第一行输出一个字符串。
第二行输出一个正整数,表示两人实际总共移动了多少步相遇。
Sample Input
4 5 A.*.. ..*.. ..*.. ....L 11 Accelerator down LastOrder left LastOrder right LastOrder left LastOrder left Accelerator down Accelerator down Accelerator down LastOrder up LastOrder left LastOrder left
Sample Output
MisakaMisaka 9
Hint
样例中,两人最终在第四行第一列相遇,最后一次移动是「最后之作」走向「一方通行」。
「一方通行」移动了3步,「最后之作」移动了6步,两人总共移动了9步。
Source
lxw
#include
using namespace std;
int main()
{
int n,m,k;
char st[150][150];
scanf("%d%d",&n,&m);
int x1,y1,x2,y2;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
scanf(" %c",&st[i][j]);
if(st[i][j]=='A')
{
x1=i;
y1=j;
}
else if(st[i][j]=='L')
{
x2=i;
y2=j;
}
}
}
scanf("%d",&k);
char name[50],op[50],ans[50];
bool flag=false;
int sum=0;
for(int i=1;i<=k;i++)
{
int temp;
scanf("%s %s",name,op);
if(strcmp(name,"Accelerator")==0)
{
bool tt=false;
if(strcmp(op,"down")==0)
{
temp=x1+1;
if(st[temp][y1]!='*'&&temp>=1&&temp<=n)
{
tt=true;
x1++;
}
}
else if(strcmp(op,"up")==0)
{
temp=x1-1;
if(st[temp][y1]!='*'&&temp>=1&&temp<=n)
{
tt=true;
x1--;
}
}
else if(strcmp(op,"left")==0)
{
temp=y1-1;
if(st[x1][temp]!='*'&&temp>=1&&temp<=m)
{
tt=true;
y1--;
}
}
else
{
temp=y1+1;
if(st[x1][temp]!='*'&&temp>=1&&temp<=m)
{
tt=true;
y1++;
}
}
if(flag==false&&tt)
sum++;
if(x1==x2&&y1==y2&&flag==false)
{
strcpy(ans,"Accelerator");
flag=true;
}
}
if(strcmp(name,"LastOrder")==0)
{
bool t2=false;
if(strcmp(op,"down")==0)
{
temp=x2+1;
if(st[temp][y2]!='*'&&temp>=1&&temp<=n)
{
t2=true;
x2++;
}
}
else if(strcmp(op,"up")==0)
{
temp=x2-1;
if(st[temp][y2]!='*'&&temp>=1&&temp<=n)
{
t2=true;
x2--;
}
}
else if(strcmp(op,"left")==0)
{
temp=y2-1;
if(st[x2][temp]!='*'&&temp>=1&&temp<=m)
{
t2=true;
y2--;
}
}
else
{
temp=y2+1;
if(st[x2][temp]!='*'&&temp>=1&&temp<=m)
{
t2=true;
y2++;
}
}
if(flag==false&&t2)
sum++;
if(x1==x2&&y1==y2&&flag==false)
{
strcpy(ans,"MisakaMisaka");
flag=true;
}
}
}
printf("%s\n%d\n",ans,sum);
return 0;
}