1440: 棋盘摆车问题

对于输入n,k;

1.当n<k时,无满足的摆法

2.否则

第一个车可以排n*n个位置(即整个棋盘),第二个可排(n-1)*(n-1)个位置,……

正如排列组合一样,车与车之间没有区别(这是组合问题),于是要除以k!

#include<stdio.h>

long long A(int x)

{

long long num=1;

for(int i=2;i<=x;i++)

{

num*=i;

}

return num;

}

int main()

{

int n,k;

long long ans;

while(scanf("%d %d",&n,&k)!=EOF)

{

ans=1;

if(n<k)

{

printf("0\n");

continue;

}

for(int i=n,j=1; j<=k; i--,j++)

{

ans*=i*i;

}

ans/=A(k);

printf("%lld\n",ans);

}

return 0;

}

1441: N!

提示很明显m=N!

log10(m)=log10(N)*log10(N-1)……log10(2)

#include<stdio.h>

#include<math.h>

int main()

{

int n;

double ans;

int Case=0;

while(scanf("%d",&n)!=EOF)

{

ans=0;

if(n>=1)

{

for(int i=2;i<=n;i++)

ans+=log10(i);

}

ans+=1;

int ans1=(int)ans;

printf("Case %dth is : %d.\n",++Case,ans1);

//printf("Case %dth is : %d %f %.0f.\n",++Case,ans1,ans,ans);试一试用这行输出,或许会发现错的缘由

}

return 0;

}

 

 

 

1442: 决胜千里之外

Nim博弈问题

博弈基本原理:

先手必胜当且仅当:
    (1)所有堆的石子数都为 1 且游戏的 SG 值为 0
    (2)有些堆的石子数大于 1 且游戏的 SG 值不为 0

http://www.cnblogs.com/XDJjy/p/3352161.html

#include<stdio.h>

int
main()

{

int n,m;

while(scanf("%d
%d",&n,&m)!=EOF)

{

if(n%(m+1))printf("胡爷真男人\n");

else printf("雷神真男人\n");

}

return 0;

}

1443: 无限的路

我的思路:

分析图形特点,线段被分为两类,一类的单位长度为

另一类为

1.对于输入的两个点,先转换到y坐标轴上,

这样方便计算第二类距离

2.然后计算第一类的线段长度,

#include<stdio.h>

#include<math.h>

double
line[210];

void
Line()

{

for(int i=1;i<210;i++)

line[i]=sqrt((double)i*i+(i-1)*(i-1));

}

int
main()

{

int n;

scanf("%d",&n);

int x1,y1,x2,y2;

Line();

while(n--)

{

scanf("%d %d %d
%d",&x1,&y1,&x2,&y2);

int sum1=x1+y1;

int sum2=x2+y2;

int sum,x;

if(sum1>sum2)

{

sum=sum1;

sum1=sum2;

sum2=sum;//sum2为较大者

x=x1;

x1=x2;

x2=x;

}

double ans=0;

for(int i=sum1+1; i<=sum2; i++)

{

ans+=line[i];

}

//printf("&%lf %d
%d\n",ans,sum1,sum2);

ans-=sqrt(2.0)*x1;

ans+=sqrt(2.0)*x2;

for(int i=sum1; i<sum2; i++)

ans+=sqrt(2.0)*i;

printf("%.3lf\n",ans);

}

return 0;

}

1444: 判断素数

基本的判断素数的方法如本程序

还有更多时间更优的算法。

#include<stdio.h>

#include<math.h>

int
Judge(int m)

{

for(int i=2; i<=sqrt(m)+0.5; i++)//若写成I<m,则会超时

{

if(m%i==0)return 0;

}

return 1;

}

int
main()

{

int n,m;

scanf("%d",&n);

while(n--)

{

scanf("%d",&m);

if(Judge(m))printf("Yes\n");

else printf("No\n");

}

return 0;

}

1448: 等式

本题是一道杂题,也是防AK(all killed即全部被解决)的题目,

将n移到右边得等式:x^2+s(x,m)x=n

发现左边两项均为正数,得到x<

,

只需向前尝试(

-1000,

)区间的解。(无完整证明)

#include<stdio.h>

#include<math.h>

int
S(int x,int m)

{

int num=0;;

while(x>0)

{

num+=x%m;

x/=m;

}

return num;

}

int
main()

{

int Case;

long long n;

int m;

scanf("%d",&Case);

while(Case--)

{

scanf("%lld
%d",&n,&m);

int st=sqrt(n);

int count=1;

int ans=-1;

for(int i=st;
i>0&&count<1000; i--,count++)

{

if((long long)i*i+(long
long)S(i,m)*i==n)ans=i;

}

printf("%d\n",ans);

}

}

1452: 青蛙的故事

递推公式的推导

假设青蛙在k(k>2)阶上

则青蛙必定是从k-1阶跳一步上来

或是从k-2阶跳两步上来

得递推公式f[k] = f[k-1]+f[k-2]

f[1]=1;

f[2]=2;

代码1:(超时)

#include<stdio.h>

int
Func(int m)

{

if(m==1)return 1;

else if(m==2)return 2;

else return Func(m-2)+Func(m-1);}

int
main()

{

int n;

while(scanf("%d",&n)!=EOF)

{

printf("%d\n",Func(n));

}

return 0;

}

代码2;

#include<stdio.h>

int
f[50];

int
Init()

{

f[1]=1;

f[2]=2;

for(int i=3;i<40;i++)

{

f[i]=f[i-1]+f[i-2];

}

}

int
main()

{

int n;

Init();

while(scanf("%d",&n)!=EOF)

{

printf("%d\n",f[n]);

}

return 0;

}

1453: 数字游戏

没有设严格的时间限制,

只需先找到k在哪一行

然后确定k是本行的第几个

#include<stdio.h>

#include<string.h>

int
main()

{

int _case;

int n,m;

long long k;

//scanf("%d",&_case);_case--

while(scanf("%d %d
%lld",&n,&m,&k)!=EOF)

{

int t;

long long sum=0;

//k=p;

for(t=n;t>=0;t-=m)

{

sum+=t;

if(k-sum<=0)break;

}

//printf("%d %d\n",sum,t);

if(t>=0)printf("%lld\n",n-(sum-k));

else printf("0\n");

}

return 0;

}

1454: 偶数拆分

代码1也不会超时,即大多数的题目并没有严格卡时间

只要思路对,代码敲对即可

代码1:

#include<stdio.h>

#include<math.h>

#include<string.h>

const
int Max=10010;

int
prime[Max];

//int
counter=0;

int
Judge(int x)

{

for(int i=2; i<=sqrt(x)+0.5; i++)

{

if(x%i==0)return 0;

}

return 1;

}

int
main()

{

//Pri();

//for(int i=0;i<10010;i++)

//if(prime[i])printf("%d
",i);

int n,ans;

while(scanf("%d",&n)!=EOF)

{

if(!n)break;

ans=0;

for(int i=2;i<n/2;i++)

{

if(Judge(i)&&Judge(n-i))

{

//printf("%d
%d\n",i,n-i);

ans++;

}

}

printf("%d\n",ans);

}

return 0;

}

代码2:

#include<stdio.h>

#include<math.h>

#include<string.h>

const
int Max=10010;

int
prime[Max];

//int
counter=0;

int
Pri()

{

memset(prime,0,sizeof(prime));

for(int i=2; i<Max; i++)

{

int flag=1;

for(int j=2;j<=sqrt(i)+0.5;j++)

{

if(i%j==0)

{

flag=0;

break;

}

}

if(flag)prime[i]=1;

}

}

int
main()

{

Pri();

//for(int i=0;i<10010;i++)

//if(prime[i])printf("%d
",i);

int n,ans;

while(scanf("%d",&n)!=EOF)

{

if(!n)break;

ans=0;

for(int i=2;i<n/2;i++)

{

if(prime[i]&&prime[n-i])

{

//printf("%d
%d\n",i,n-i);

ans++;

}

}

printf("%d\n",ans);

}

return 0;

}

小结:

本次比赛完满结束,先感谢一下出题者。虽然这些题是他们眼里的水题,但是出题者也是煞费苦心,正如以前的学长一样。然后是尽职尽责的团学年工作者,当然也不能忘了默默支持大家的领导老师。

希望大家

阅读,思考,分享,K题。编程优化人生!

Xdj

计算机学院2014年“新生杯”ACM程序设计大赛的更多相关文章

  1. Contest - 第10届“新秀杯”ACM程序设计大赛现场热身赛 赛后信息(题解)

      Problem Id Title   Problem A A+B   Problem B 统计字数   Problem C 生日计算   Problem D 冬瓜的寒假之旅 Problem A(略 ...

  2. Contest - 第10届“新秀杯”ACM程序设计大赛网络资格赛 赛后信息(晋级名单·正式版)

    2014_acm_fresh_0057 刘畅 20131620 2014_acm_fresh_0099 汪哲 20132185 2014_acm_fresh_0086 陈顺 2014111776 20 ...

  3. Contest - 第10届“新秀杯”ACM程序设计大赛网络预选赛 赛后信息(晋级名单)

    经过比赛结果以及综合评定,以下42名同学暂定出现.下为出现名单(打*为 友情参赛 或为 有重大作弊嫌疑的选手). 在即日24时之前,若有异议,仍可申诉,申诉邮箱:desgard_duan@foxmai ...

  4. 第十一届GPCT杯大学生程序设计大赛完美闭幕

    刚刚过去的周六(6月7号)是今年高考的第一天,同一时候也是GPCT杯大学生程序设计大赛颁奖的日子,以下我们用图文再回想一下本次大赛颁奖的过程. 评审过程的一些花絮<感谢各位评审这些天的付出!&g ...

  5. 西南科技大学第十一届ACM程序设计大赛发言稿

    西南科技大学第十一届ACM程序设计大赛发言稿 各位老师.志愿者及参赛选手: 大家好,我是来自计科学院卓软1301的哈特13,很荣幸今天能站在这里代表参赛选手发言. 回想起来,我参加ACM比赛已经快两年 ...

  6. 第13届 广东工业大学ACM程序设计大赛 C题 平分游戏

    第13届 广东工业大学ACM程序设计大赛 C题 平分游戏 题目描述 转眼间又过了一年,又有一届的师兄师姐要毕业了. ​ 有些师兄师姐就去了景驰科技实习. 在景驰,员工是他们最宝贵的财富.只有把每一个人 ...

  7. nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)

    题目1238 题目信息 执行结果 本题排行 pid=1238" style="text-decoration:none; color:rgb(55,119,188)"&g ...

  8. nyoj 1239 引水project (河南省第八届acm程序设计大赛)

    题目1239 pid=1239" style="color:rgb(55,119,188)">题目信息 pid=1239" style="col ...

  9. nyoj1237 最大岛屿(河南省第八届acm程序设计大赛)

    题目1237 pid=1237" style="color:rgb(55,119,188)">题目信息 执行结果 本题排行 讨论区 最大岛屿 时间限制:1000 m ...

随机推荐

  1. extjs panel自动滚动

    指定两个参数 height:600, autoScroll:true, http://bbs.csdn.net/topics/280012147

  2. Actionform

    Actionform 2013年7月8日 15:08 Reset 用actionform是把数据恢复到初始状态 Getter/setter Validate 验证 已使用 Microsoft OneN ...

  3. JAVA类与对象(六)------实例变量与类变量的区别,实例方法和类方法的区别

    实例变量 实例变量声明在一个类中,但在方法.构造方法和语句块之外: 当一个对象被实例化之后,每个实例变量的值就跟着确定: 实例变量在对象创建的时候创建,在对象被销毁的时候销毁: 实例变量的值应该至少被 ...

  4. “我爱淘”第二冲刺阶段Scrum站立会议2

    完成任务: 对发布页面优化了一下,并将登陆的功能实现了一点,就是还没有实现注册的功能 . 计划任务: 在客户端实现分类功能,通过学院的分类查看书籍. 遇到问题: 自动将数据库的内容返回到客户端.

  5. 第一个完整的cppunit单元测试程序

    在极限编程中,测试程序本应该在编写主程序之前就要写好,然后将写好的类程序放在测试程序中进行测试,但考虑到项目中需求文档等并未将接口定义好,我无从开始,而且,自己对单元测试也是刚刚熟悉,需要一边写测试程 ...

  6. VMWare EXSi 添加新磁盘时 报错 HostStorageSystem.ComputeDiskPartitionInfo 的处理

    给 VMWare EXSi 添加新磁盘时报错 : Call "HostStorageSystem.ComputeDiskPartitionInfo" for object &quo ...

  7. eclipse for jee版配置tomcat

    在网上搜到的大多都是插件配置,其实默认的就可以配置tomcat的. 第一步:New -> Other -> Server ,然后选择Apache下的tomcat的版本. 注意:如果Next ...

  8. C#制作高仿360安全卫士窗体<一>

    开始写这一系列博客之前先要向大家说声抱歉,放肆雷特建立很久却很少有更新.当然博客人气也不旺,大部分都是看的人多评论收藏的人少.一直想要改变这种状态,正好赶上了最近工作上做了一个高仿360安全卫士窗体. ...

  9. ZBar之自定义二维码扫描

    // // YvanQRCodeViewController.m // zBar // // Created by City--Online on 15/6/8. // Copyright (c) 2 ...

  10. 在线自动下载最新版本jquery

    <script src="http://code.jquery.com/jquery-latest.js">