御坂美琴与妹妹们
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
if(n>=1&&n<=20000)
printf("SISTER\n");
else
printf("LastOrder\n");
return 0;
}
御坂美琴与呱太
排一遍序,买便宜的。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,x;
int a[150];
scanf("%d%d",&n,&x);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+1+n);
int sum=0;
for(int i=1;i<=n;i++)
{
if(x>=a[i])
{
x-=a[i];
sum++;
}
else
break;
}
printf("%d\n",sum);
return 0;
}
御坂美琴与佐天泪子
判断一下编号是不是素数,如果是优先值乘2倍,不是的话直接整除运算就可以
#include <bits/stdc++.h>
using namespace std;
bool vis[150];
void getprime()
{
memset(vis,false,sizeof(vis));
vis[1]=true;
for(int i=2;i<=150;i++)
{
if(!vis[i])
for(int j=i+i;j<=150;j+=i)
vis[j]=true;
}
}
int main()
{
getprime();
int n;
int a,b;
int ans[150];
scanf("%d",&n);
int o=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);
int temp=a/(b+1);
if(!vis[i])
temp=temp*2;
ans[++o]=temp;
}
for(int i=1;i<o;i++)
printf("%d ",ans[i]);
printf("%d\n",ans[o]);
return 0;
}
真正的落雷
先把二位字符数组初始化为'.',然后再把与中心位置距离小于等于k的赋值为’*‘。memset用来是把st初始化的。
#include <bits/stdc++.h>
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<n;i++)
{
for(int j=0;j<m;j++)
{
if(abs(x-i)+abs(y-j)<=k)
st[i][j]='*';
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
printf("%c",st[i][j]);
printf("\n");
}
return 0;
}
御坂美琴与初春饰利
先把为大写字母的判断出来并输出,然后把为数字的判断出来并输出
#include <stdio.h>
int main()
{
int n;
char st[150];
scanf("%d %s",&n,st);
for(int i=0;i<n;i++)
{
if(st[i]>='A'&&st[i]<='Z')
printf("%c",st[i]);
}
printf("\n");
for(int i=0;i<n;i++)
{
if(st[i]>='0'&&st[i]<='9')
printf("%c",st[i]);
}
printf("\n");
return 0;
}
御坂美琴与白井黑子
按照题目意思写递归函数就行
#include <bits/stdc++.h>
using namespace std;
int F(int x,int y)
{
if(y!=0)
return F(x,y-1)+F(x-1,y-1);
else
return x+1;
}
int main()
{
int x,y;
scanf("%d%d",&x,&y);
int ans=F(x,y);
printf("%d\n",ans);
return 0;
}
御坂美琴与伙伴们
把二维数组的值存到一维数组里面,然后由大到小排序,然后每个人依次取第一个元素值就可以。
#include <bits/stdc++.h>
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;
}
一方通行与最后之作
按照题目意思模拟即可,判断一下这一步该谁走,该往哪个方向走,有没有超出边界范围或是不是’*‘,如果是的话就不走,然后再判断一下走完这一步之后,是不是相遇了,如果相遇,用个数组存下来,并且把走过的步数用个变量存下来。
#include <bits/stdc++.h>
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;
}