20161108新生赛题解
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int max(int x,int y)
{
if(x>y)return x;
return y;
}
int min(int x,int y)
{
if(x<y)return x;
return y;
}
int main()
{
int N;
scanf("%d",&N);
int x;
int minx=0x7fffffff;
int maxx=0;
int sum=0;
for(int i=1;i<=N;i++)
{
scanf("%d",&x);
sum+=x;
minx=min(minx,x);
maxx=max(maxx,x);
}
if((sum/N)*N==sum)
printf("%d",maxx);
else printf("%d",minx);
return 0;
}
//此题循环输入累加求和同时求出最大最小值分别保存然后判断sum%N是否等于0即可
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
const int NN = 20500;
char a[NN]; //因为字符串读入方便,所以用char数组存储。
int main() {
memset(a,0,sizeof(a));
//freopen("B.in","r",stdin);
//freopen("B.out","w",stdout);
int n;
scanf("%d",&n);
scanf("%s", a+1);//字符读入
int flag=0;
int sum=0;
int last=0;
for(int i=1;i<=n*n;i++)
{
if(flag==0) //第一个字符的
{
if(a[i]=='1')//判断第一个字符是不是0 是,则累加sum 否则输出0 因为题目要求说第一个数字一定是0的个数,后面交替进行输出
{
printf("0 ");
last=1;
sum++;
}
else if(a[i]=='0')
{
last=0;
sum++;
}
flag=1;
}
else //除了第一个字符的
{
if(a[i]-'0'==last)sum++;
else
{
printf("%d ",sum);
sum=1;
}
}
if(a[i]=='0')last=0;
else last=1;
}
printf("%d",sum);
return 0;
}
首先把n*n个字符读入到数组a[]中,除了0就是1,那么第一个字符特殊处理下 ,因为题目要求是第一个数字一定是0的个数,我们用last保存i这个位置的上一个字符是0还是1,与当前的字符比较,相同则sum++否则输出sum然后sum=1(因为当前字符就是一个)
原题
题解&代码:
https://yq.aliyun.com/articles/19153
很容易发现规律,输入的N是奇数时就是AA 偶数是FF
分析如下:
我们对该棋盘用1*2的长方形进行覆盖。若n为偶数,那么必存在一个覆盖方案。此时先手选择走向与当前状态同处一个长方形内的另一点。这样,无论先手怎么移动,先手必存在一种移动方法。由于这个游戏无平局,所以先手必胜。若n为奇数,我们考虑同样的方法,将n*n的棋盘除去起点的n*n-1格进行覆盖。之后无论先手怎么走,后手都存在一种移动方案,所以先手必败。
#include<stdio.h>
int main() {
int n;
while(scanf("%d",&n)!=EOF){//多样例数据输入方式
if(n==0) break;
if(n%2==0) printf("FF\n");
else printf("AA\n");
}
return 0;
}
直接看代码吧 求定积分而已
#include<stdio.h>
int main() {
int n;
double a,b,c,x,p,q;
scanf("%lf %lf %lf %lf %lf",&a,&b,&c,&p,&q);
x=p;
double aa=0.50000*a*x*x+(1.0/3.0)*b*x*x*x+(0.250000)*c*x*x*x*x;
x=q;
double bb=0.50000*a*x*x+(1.0/3.0)*b*x*x*x+(0.250000)*c*x*x*x*x;
printf("%.3f\n",bb-aa);
return 0;
}
会两点间距离公式然后开方就行了。。。。