20161108新生赛题解

20161108新生赛题解



lolizlm的数字

 

#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即可

 

 

 

 

 

 


kx的压缩

 

 

#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(因为当前字符就是一个)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

txt的号码

原题

题解&代码:

https://yq.aliyun.com/articles/19153

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Let's play

 

很容易发现规律,输入的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;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A Simple Math Problem

直接看代码吧 求定积分而已

#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;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Add Water

 

 

会两点间距离公式然后开方就行了。。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值