A.我是签到题啊!
题意:看图中的题可以很明显的看出来.
思路:由费马大定理得不存在
费马大定理链接(百度百科)
https://baike.baidu.com/item/费马大定理/80363?fr=aladdin
参考代码:
#include<stdio.h>
int main()
{
printf("NO");
return 0;
}
B.我是简单题
题意:学长当遇到名字首字母或末尾字母为s(不是一个确定的字母)时才帮忙点赞,每点一次赞学长就会降低k点幸福值,在学长幸福值m<=0时学长会停止盖楼,此时就要输出点赞的次数,如果学长不需要盖楼就输出NICE DAY!.
思路:先定义结构体记录个个人的姓名,在用for循环对姓名的首字母和末位字母与s(你输入的某个字母)进行比较,若相等则减少k点幸福值,若是幸福值降到0或者循环自然结束,输出此时的点赞数(若不需要点赞则输出NICE DAY!)
参考代码:
#include<bits/stdc++.h>
#include<string.h>
using namespace std;
struct lport
{
char ch[10005];
int a;
}v[10005];
int main()
{
int N;
scanf("%d",&N);
while(N--)
{
long long m,i,k,n;
char s;
scanf("%lld%lld%lld",&m,&k,&n);
scanf(" %c",&s);
for(i=1;i<=n;i++)
{
scanf("%s",v[i].ch);
v[i].a=strlen(v[i].ch);
//printf("%d",v[i].a);
}
long long c=0;
for(i=1;i<=n;i++)
{
if(v[i].ch[0]==s||v[i].ch[v[i].a-1]==s)
{
m=m-k;
c++;
//printf("%d ",m);
}
if(m<=0)
break;
}
if(c==0)
printf("NICE DAY!\n");
if(c>0)
printf("%d\n",c);
}
return 0;
}
C.我才是简单题
注意数的范围!注意数的范围!注意数的范围!
题意:一共有n块布,你需要用最少的价钱把所有的布买下来,但是你想直接买第n块布时,你需要花费n*那块布的单价,当你先买完第一块布再买第二块布时,你只需要花费第二块布的单价,遇到布的单价时,卖家倒贴钱给你.讲真这样做生意真的会亏死的
思路:可以先记录负数的位置,用贪心的思想先倒序买价格为负的布,在顺序把价格为正的不买下来,也可以判断遇到正数直接求和,遇到负数先乘布的序号在求和.
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
long long n;
while(~scanf("%lld",&n))
{
long long a[1000005],i,s=0;
for(i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
for(i=1;i<=n;i++)
{
if(a[i]<0)
s=s+a[i]*i;
else s=s+a[i];
}
printf("%lld\n",s);
}
return 0;
}
D.暴力我啊!
题意:有一个矩形的方正上面有n乘n个格子,每个格子中装有敌人(每个格子中装有敌人数可以不相同)你的可以轰炸m乘m范围的敌人(n>m)你需要输出击杀敌人最多的那次轰炸的敌人数.
思路:四重for循环暴力解决 (不暴力我也不会,我太菜了),第一,二重for循环表示能轰炸次数,第三,四重for循环表示轰炸m*m的范围的敌人数之和.
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
int n,m,k=0;
while(~scanf("%d%d",&n,&m))
{
k++;
int i,j,u,h;
int a[105][105];
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
}
int s=0;
for(i=m;i<=n;i++)
{
for(j=m;j<=n;j++)
{
int x=0;
for(u=i-m+1;u<=i;u++)
{
for(h=j-m+1;h<=j;h++)
{
x=x+a[u][h];
}
}
if(x>s)
s=x;
}
}
printf("%d\n",s);
if(k==100)
break;
}
return 0;
}
E.暴力啥啊!
double会爆!double会爆!double会爆!
题意:题意很简单就是给你一堆数,求其中两个数的差与这两个数的序号的差的商.(输出的是保留两位小数的浮点数)
思路:当你把序号看成横坐标,数A[i]看成纵坐标就是一道求斜率的题,后又不难看出当序号的差是1的时候才能出现斜率的最大值.
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
while(~scanf("%d",&n))
{
int a[10005];
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int s=-2e9-5,x;
for(int i=1;i<n;i++)
{
x=a[i+1]-a[i];
if(x>s)
s=x;
}
printf("%d.00\n",s);
}
return 0;
}
F.我也是签到题
题意:是否存在一个三位的十进制数,它的各个位上的数之和与它十六进制,十二进制各个位上的数之和都相等.
思路:单纯的进制转换,后把各个数相加,在比较即可.
参考代码:
#include<stdio.h>
#include<string.h>
int cmp(int a,int b)
{
int s=0;
while(a)
{
s=s+a%b;
a/=b;
}
return s;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
if(cmp(n,10)==cmp(n,12)&&cmp(n,10)==cmp(n,16))
printf("Specializ!!!\n");
else printf("disappointment....\n");
}
return 0;
}
G.我才是签到题
题意:现需要两个性别不同的人来进行游戏,他们会给我们两个人的学号或名字,需要我们来告诉他们他们所说的两个人是否能进行游戏.
思路:先用结构体记录每个人的信息在,在他询问我们某两个人是否能一起进行游戏时,在结构体中寻找他们的性别来进行比较.
参考代码:
#include<bits/stdc++.h>
#include<string.h>
using namespace std;
struct lport
{
char ch[10005];
char a[10005];
char s;
}v[10005];
int main()
{
int N,i;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
scanf("%s%s %c",v[i].ch,&v[i].a,&v[i].s);
}
int m;
long long n=1,y=0,e=0;
scanf("%d",&m);
while(m--)
{
char b[10005],c[10005];
scanf("%s%s",b,c);
if(b[0]-48>=0&&b[0]-48<=9)
{
for (i=1;i<=N;i++)
{
if(strcmp(b,v[i].a)==0)
{
y=i;
break;
}
}
}
else for(i=1;i<=N;i++)
{
if(strcmp(b,v[i].ch)==0)
{
y=i;
break;
}
}
if(c[0]-48>=0&&c[0]-48<=9)
{
for (i=1;i<=N;i++)
{
if(strcmp(c,v[i].a)==0)
{
e=i;
break;
}
}
}
else for(i=1;i<=N;i++)
{
if(strcmp(c,v[i].ch)==0)
{
e=i;
break;
}
}
if(v[e].s==v[y].s)
printf("n\n");
else printf("Y\n");
}
return 0;
}
I.我是个防AK题你信吗?
题意:给你一个字符串,你需要找到l,w,p这三个字母(区分大小写)
思路:题意中或许讲不清,反正就是在字符串中找到l,w,p这三个字母的数量,在输出三个字母出现的次数最少的那个字母的那个值就好了~~(原谅我在比赛时想太多了)~~
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
char ch[10005];
int a[3]={0};
scanf("%s",ch);
for(int i=0;i<strlen(ch);i++)
{
if(ch[i]=='l'||ch[i]=='L')
a[0]++;
if(ch[i]=='w'||ch[i]=='W')
a[1]++;
if(ch[i]=='p'||ch[i]=='P')
a[2]++;
}
if(a[0]>a[1])
a[3]=a[1];
else a[3]=a[0];
if(a[3]>a[2])
a[3]=a[2];
printf("%d",a[3]);
printf("\n");
}
return 0;
}
J.听取wa声一片
题意:就是简单问你换与不换的概率.
思路:由三门问题可轻松得出答案.
三门问题的百度百科链接:
(https://baike.baidu.com/item/三门问题/1242689?fr=aladdin
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
printf("0.333 0.667");
}
完成了!!!