目录

  • 2085.核反应堆
  • 2086.A1 = ?
  • 2087.剪花布条
  • 2088.Box of Bricks
  • 2089.不要62

2085.核反应堆

Problem Description
某核反应堆有两类事件发生:
高能质点碰击核子时,质点被吸收,放出3个高能质点和1个低能质点;
低能质点碰击核子时,质点被吸收,放出2个高能质点和1个低能质点。
假定开始的时候(0微秒)只有一个高能质点射入核反应堆,每一微秒引起一个事件发生(对于一个事件,当前存在的所有质点都会撞击核子),试确定n微秒时高能质点和低能质点的数目。Input
输入含有一些整数n(0≤n≤33),以微秒为单位,若n为-1表示处理结束。Output
分别输出n微秒时刻高能质点和低能质点的数量,高能质点与低能质点数量之间以逗号空格分隔。每个输出占一行。Sample Input
5 2
-1Sample Output
571, 209
11, 4提示
可以使用long long int对付GNU C++,使用__int64对付VC6

分析:根据题目中的条件,直接使用for循环即可。

#include <stdio.h>void NuclearReactor(){int n,i;__int64 high,low,temp;while(scanf("%d",&n)!=EOF && n!=(-1) && (n>=0 && n<=33)){//0微妙时,只有一个高能质子 high=1;low=0;for(i=1;i<=n;i++){temp=high;high=3*high+2*low;low+=temp;}printf("%I64d, %I64d\n",high,low);}
}

2086.A1 = ?

Problem Description
有如下方程:Ai = (Ai-1 + Ai+1)/2-Ci (i = 1, 2, 3, .... n).
若给出A0, An+1 , 和 C1, C2, .....Cn.
请编程计算A1 = ?Input
输入包括多个测试实例。
对于每个实例,首先是一个正整数n,(n <= 3000); 然后是2个数a0, an+1.接下来的n行每行有一个数ci(i = 1, ....n);输入以文件结束符结束。Output
对于每个测试实例,用一行输出所求得的a1(保留2位小数).Sample Input
1
50.00
25.00
10.00
2
50.00
25.00
10.00
20.00Sample Output
27.50
15.00

分析:可以将本题看成一个找规律的数学题:
An = (1/2)An-1 + (1/2)An+1 - Cn
An-1 = (2/3)An-2 + (1/3)An+1 - (2/3)Cn - (4/3)Cn-1
An-2 = (3/4)An-3 + (1/4)An+1 - (1/2)Cn - Cn-1 - (3/2)Cn-2
An-3 = (4/5)An-4 + (1/5)An+1 - (2/5)Cn - (4/5)Cn-1 - (6/5)C~n-2 - (8/5)Cn-3

所以可以得到
A1 = (n/(n+1))A0 + (1/(n+1))An+1 - (2/(n+1))Cn - (4/(n+1))Cn-1 - … -(2n/(n+1))C1
= [ nA0+ An+1 - 2(Cn + 2Cn-1 + 3Cn-2 + … + nC1) ]/(n+1)
最后在根据结论编写代码即可。

#include <stdio.h>void A1(){int n,i;double A0,An,A1,temp;//C[i]=Ci double C[3001];while(scanf("%d",&n)!=EOF){scanf("%lf%lf",&A0,&An);for(i=1;i<=n;i++){scanf("%lf",&C[i]);}A1=1.0*n/(n+1)*A0+1.0/(n+1)*An;temp=1.0*n*2;for(i=1;i<=n;i++){A1-=temp/(n+1)*C[i];temp-=2;}printf("%.2lf\n",A1);}
}

2087.剪花布条

Problem Description
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?Input
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。Output
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。Sample Input
abcde a3
aaaaaa  aa
#Sample Output
0
3

分析:使用串的模式匹配算法——KMP算法,不过本题需要统计匹配成功的次数,即能从花纹布中剪出的最多小饰条个数。

#include <stdio.h>//KMP算法
void GetNextval(char t[],int nextval[]){int length=strlen(t);int j=0,k=-1;nextval[0]=-1;while(j<length){if(k==-1 || t[j]==t[k]){j++;k++;if(t[j]!=t[k]){nextval[j]=k;}else{nextval[j]=nextval[k];}}else{k=nextval[k];}}
} void CutDown(){char cloth1[1001],cloth2[1001];int length1,length2,count;int i,j;int nextval[1001]={0};while(scanf("%s %s",cloth1,cloth2)!=EOF){if(cloth1[0]=='#'){break;}GetNextval(cloth2,nextval);length1=strlen(cloth1);length2=strlen(cloth2);i=0;count=0;for(i=0;i<length1;){j=0;while(i<length1 && j<length2){if(j==-1 || cloth1[i]==cloth2[j]){i++;j++;}else{j=nextval[j];}}if(j>=length2){count++;}}printf("%d\n",count);}
}

2088.Box of Bricks

Problem Description
Little Bob likes playing with his box of bricks. He puts the bricks one upon another and builds stacks of different height. “Look, I've built a wall!”, he tells his older sister Alice. “Nah, you should make all stacks the same height. Then you would have a real wall.”, she retorts. After a little consideration, Bob sees that she is right. So he sets out to rearrange the bricks, one by one, such that all stacks are the same height afterwards. But since Bob is lazy he wants to do this with the minimum number of bricks moved. Can you help?Input
The input consists of several data sets. Each set begins with a line containing the number n of stacks Bob has built. The next line contains n numbers, the heights hi of the n stacks. You may assume 1≤n≤50 and 1≤hi≤100.The total number of bricks will be divisible by the number of stacks. Thus, it is always possible to rearrange the bricks such that all stacks have the same height.The input is terminated by a set starting with n = 0. This set should not be processed.Output
For each set, print the minimum number of bricks that have to be moved in order to make all the stacks the same height.
Output a blank line between each set.Sample Input
6
5 2 4 1 7 5
0Sample Output
5

分析:先求出平均值,然后再将平均值与所有低于平均值的栈高度作差,将所有差相加即可以得到结果。

#include <stdio.h>void BoxofBricks(){//n:栈的个数int n,sum,bricks[101]={0},count;int i;while(scanf("%d",&n)!=EOF && n){sum=0;for(i=0;i<n;i++){scanf("%d",&bricks[i]);sum+=bricks[i];}count=0;sum/=n;for(i=0;i<n;i++){if(sum>bricks[i]){count+=(sum-bricks[i]);}}printf("%d\n",count);}
}

2089.不要62

Problem Description
杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。
杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。
不吉利的数字为所有含有4或62的号码。例如:
62315 73418 88914
都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。
你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。Input
输入的都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。Output
对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。Sample Input
1 100
0 0Sample Output
80

分析:可以单独写一个判断是否为吉利数字的函数,然后再对n~m之间的数分别进行判断,统计不是不吉利数字的个数即可。

#include <stdio.h>//判断是否为不吉利数字,若是则返回1,否则返回0
int Check(int n){int temp;while(n){temp=n%10;if(temp%10==4){return 1;}else if(temp==2 && (n%100)/10==6){return 1;}n/=10;}return 0;
}void No62(){int n,m,i,count;while(scanf("%d %d",&n,&m)!=EOF){if(n==0 && m==0){break;}count=0;for(i=n;i<=m;i++){if(Check(i)==0){count++;}}printf("%d\n",count);}
}

杭电OJ第11页2090~2094算法题(C语言)

杭电OJ第11页2085~2089算法题(C语言)相关推荐

  1. 杭电OJ第11页2075~2079算法题(C语言)

    目录 2075.A|B? 2076.夹角有多大 2077.汉诺塔IV 2078.复习时间 2079.选课时间 2075.A|B? Problem Description 正整数A是否能被正整数B整除, ...

  2. 杭电OJ第11页2035~2039算法题(C语言)

    目录 2035.人见人爱A^B 2036.改革春风吹满地 2037.今年暑假不AC 2038.Message 2039.三角形 2035.人见人爱A^B Problem Description 求A^ ...

  3. 杭电OJ第11页2065~2069算法题(C语言)

    目录 2065."红色病毒"问题 2066.一个人的旅行 2067.小兔的棋盘 2068.RPG的错排 2069.Coin Change 2065."红色病毒" ...

  4. 蟠桃记c语言当输入0结束循环,杭电OJ第11页2010-2019道题(C语言)

    2010. 水仙花数 问题描述 Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个三位 ...

  5. 【ACM】杭电OJ 1004

     题目链接:杭电OJ 1004 运行环境:Dev-C++ 5.11 思路: 先把先把num数组全部赋值为1:第一个颜色单独输入,从第二个开始,需要与前面的进行比较,如果前面有相同的颜色,则在目前的nu ...

  6. 【ACM】杭电OJ 1003。

    运行环境VS2017  题目链接:杭电OJ 1003 主要思想是: 用d[i]来存放前i项中最大的和,得到end,然后再倒推,得起始的位置begin 然而在程序42行的疑问,大家可以讨论一下吗???? ...

  7. 【ACM】杭电OJ 2005

     题目链接:杭电OJ 2005 第一次写的时候: #include "stdio.h" int main () {int year,month,day,days,flag;whil ...

  8. 杭电OJ(HDOJ)入门题目列表

    杭电OJ链接: http://acm.hdu.edu.cn/ 注册与使用指南: https://blog.csdn.net/qq_38769551/article/details/101510000 ...

  9. 杭电oj ——1000 A+B问题

    目录 杭电oj使用介绍: 1000  A+B问题 方法一:主函数直接求和 方法二:定义一个ADD函数求和 杭电oj使用介绍: 从今天开始推出新专栏--杭电oj 题库啦.首先附上杭电oj的链接 acm. ...

最新文章

  1. 树莓派模拟量输入范围_使用 RPi.GPIO 模块的输入(Input)功能
  2. 编程大讲坛、坛坛是佳酿--编程大讲坛:C#核心开发技术从入门到精通
  3. mysql 分表全局id_MySQL分庫分表環境下全局ID生成方案
  4. Python Django 可变参数*与**的区别
  5. ExecutorService——shutdown方法和awaitTermination方法
  6. java序列化与深度拷贝
  7. php日期相减函数,倒计时函数_计算两个时间相差值_PHP函数
  8. PS打造油画般的风景人像
  9. Wi-Fi 6 认证计划启动:开启 Wi-Fi 新纪元
  10. 并发的线程入门到并发安全原理解析,offer拿到手软
  11. Masonry详解(转)
  12. 【python简洁之道】-----1. 注释规则
  13. 高大上必备!D3.js对产品的贡献度剖析
  14. NEFU 262 贪吃的九头龙(树形背包,4级)
  15. Python super(钻石继承)
  16. 关于以太网IO模块如何选型
  17. 数据库同步利器 otter 双A同步配置
  18. 精制糖行业采用树脂工艺进行脱色技术分析
  19. 如果要你向别人推荐电影,你最先想到的是那些呢?
  20. VRF虚拟路由转发实例说明

热门文章

  1. 系统回顾MyBatis体验这一优秀的持久层框架
  2. ace-admin图标样式设置
  3. pycharm安装第三方库速度慢解决方法
  4. @Override标签背后的小秘密---记录java的思行合一(作者:leeon)
  5. 基于matlab城市空中交通场景中的激光雷达与雷达融合仿真(附源码)
  6. 关于我的1080P显示器输出不能达到1080P于是我只能自己修改EDID来让它认清现实这件事
  7. 【uniapp】轮播图图片适配
  8. python同义词替换(jieba分词)
  9. 从键盘输入三个实数表示长方体的长宽高,计算表面积和体积。
  10. 抖音小程序拍抖音功能