C语言入门水题总结2
小光棍数
- 描述
-
最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?
- 输入
- 有多组测试数据。第一行一个整数n,表示有n组测试数据。接下来的每行有一个整数m。
- 输出
- 输出第m个小光棍数。
- 样例输入
-
1 1
- 样例输出
-
471
#include<stdio.h>
int main()
{int n;long long m;scanf("%d",&n);while(n--){scanf("%lld",&m);printf("%lld\n",471+(m-1)*1000);}
}
黑色帽子
- 描述
-
最近发现了一个搞笑的游戏,不过目前还没玩过。一个舞会上,每个人头上都戴着一顶帽子,帽子只有黑白两种,黑的至少有一顶。每个人都能看到别人帽子的颜色,可是看不见自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的的黑色帽子,就打自己一个耳光(,都很自觉,而且不许打别人的哦),开灯,关灯,开灯……。因为都不想打自己耳光,所以不确定的情况下都不会打自己的,现在有n顶黑色帽子,第几次关灯才会听到有人打自己耳光?
- 输入
-
第一行只有一个整数m(m<=100000),表示测试数据组数。
接下来的m行,每行有一个整数n(n<=100000000),表示黑色帽子的顶数。 - 输出
- 输出第几次关灯能听到耳光声,每组输出占一行。
- 样例输入
-
1 2
- 样例输出
-
2
注:刚开始我以为不管有(一除外)几顶帽子,参加者在第一次熄灯后发现没人打自己,就会判断自己是黑帽子,所以都为二,现假设为n顶,戴黑帽子者看到是n-1顶,每次等待其余黑帽者共为n-1次,加上开头一次,则为n次
#include<stdio.h>
int main(void)
{int n,m;scanf("%d",&m);while(m--&&scanf("%d",&n)){printf("%d\n",n);}
}
房间安排
- 描述
-
2010年上海世界博览会(Expo2010),是第41届世界博览会。于2010年5月1日至10月31日期间,在中国上海市举行。本次世博会也是由中国举办的首届世界博览会。上海世博会以“城市,让生活更美好”(Better City,Better Life)为主题,将充分探索21世纪城市生活。
这次世博会总投资达450亿人民币,创造了世界博览会史上的最大规模记录。吸引200个国家和国际组织参展。预计有7000万人次的参观者。
为了更好地接待在这期间来自世界各地的参观者,如何合理安排各宾馆的住房问题提到了日程。组委会已接到了大量的客户住宿定单,每张定单的内容包括要住宿的房间数,开始住宿时间和要住的天数。为了便于整个城市各宾馆的管理,组委会希望对这些定单进行安排,目的是用尽可能少的房间来满足这些定单,以便空出更多的房间用于安排流动游客。
组委会请求DR.Kong来完成这个任务,对这些定单进行合理安排,使得满足这些定单要求的房间数最少。
假设:某个定单上的游客一旦被安排到某房间,在他预定住宿的期间内是不换房间的。为了简化描述,定单上的开始住宿时间为距离现在的第几天。例如,定单为(10,30,5)表示游客要求使用10个房间,第30天开始连住5天。
- 输入
-
第一行:T 表示有T组测试数据
每组测试数据第一行:N 表示定单数
每组测试数据接下来有N行,每行有三个整数 A B C 表示房间数,开始住宿时间和天数
1<=T<=100
1<=N<=10000 1<=A<=10 1<=B<=180 1<=c<=10 - 输出
- 输出一个整数,为满足所有定单要求的最少房间数。
- 样例输入
-
1 3 3 10 4 4 9 3 3 12 6
- 样例输出
-
7
思路:一开始想着用结构体去实现,浪费了大量时间,后来发现了只要先将每笔订单的开始到结束时间都用加上所用房间数,若时间重复,则房间累加,求出最大值即可
#include<stdio.h>
#include<algorithm>
using namespace std;
int s[10005];
int main()
{ int i,j,n,test,ans,a,b,c; scanf("%d",&test); while(test--) { scanf("%d",&n); for(i=0,ans=0;i<n;i++) { scanf("%d%d%d",&a,&b,&c); for(j=b;j<b+c;j++){s[j]+=a;ans=max(ans,s[j]);}}printf("%d\n",ans); for(i=1;i<10005;i++)s[i]=0; } return 0;
}
蛇形填数
- 描述
-
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4- 输入
- 直接输入方陈的维数,即n的值。(n<=100)
- 输出
- 输出结果是蛇形方陈。
- 样例输入
-
3
- 样例输出
-
7 8 1 6 9 2 5 4 3
一道不难却让我死循环了无数回的题目
#include<stdio.h>//正确代码
int a[101][101];
int main(void)
{int n,s=1,i,j,k;scanf("%d",&n);i=1;j=n;a[1][j]=s;k=n*n;while(s<k){while(i+1<=n&&a[1+i][j]==0) a[++i][j]=++s;//向下 while(j-1>=1&&a[i][j-1]==0) a[i][--j]=++s;//向左while(i-1>=1&&a[i-1][j]==0) a[--i][j]=++s;//向上while(j+1<=n&&a[i][j+1]==0) a[i][++j]=++s;//向右}for(i=1;i<n+1;i++){for(j=1;j<n+1;j++){printf("%d ",a[i][j]);} printf("\n");
}
}
#include<stdio.h>//错误代码,我看了很就才发现的错误
int a[101][101];
int main(void)
{int n,s=1,i,j,k;scanf("%d",&n);i=1;j=n;a[1][j]=s;k=n*n;while(s<k){while(i+1<=n&&a[++i][j]==0) a[i][j]=++s;//向下 while(j-1>=1&&a[i][--j]==0) a[i][j]=++s;//向左while(i-1>=1&&a[--i][j]==0) a[i][j]=++s;//向上while(j+1<=n&&a[i][++j]==0) a[i][j]=++s;//向右
}for(i=1;i<n+1;i++){for(j=1;j<n+1;j++){printf("%d ",a[i][j]);} printf("\n");
}
}
无线网络覆盖
- 描述
-
我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆盖郑州大学。
现在学校给了他一个机会,因此他要购买很多的无线路由。现在他正在部署某条大道的网络,而学校只允许把他的无线路由器放在路的正中间。我们默认这条大道是笔直的并且它在任何地方的宽度都一样。并且所有的路由器的覆盖面积是相同的。现在乐乐计算出这条大道的长和宽,以及路由器的覆盖半径,想请你帮忙,帮他计算出他最少要购买的路由器的数量。
注意:为了防止某种干扰,两台无线路由之间的最小距离不能小于1米
图1中为一条矩形的道路,中间的虚线代表中线。图2为最小覆盖的示意图。
- 输入
-
输入包括多组测试数据
第一部分:一个整数T(1<=T<=500)
第二部分:一共T行,每行包括三个整数L,D,R代表路的长,宽和覆盖半径(米)。
(1<=L<=100000),(1<=D<=50),(1<=R<=200)。 - 输出
- 对于每组测试数据输出各占一行,只有一个整数,表示最少的路由器数量。如果不能覆盖,请输出impossible
- 样例输入
-
2 40 6 5 40 10 5
- 样例输出
-
5
impossible
思路:这道题只要将d,r,l,看成float输出就会容易很多
#include<math.h>
int main(void)
{float t,l,d,r,n;scanf("%f",&t);while(t--&&scanf("%f%f%f",&l,&d,&r)){int k;if(r*2<=d||r<=1)printf("impossible\n");else{n=l/(2*sqrt(r*r-((d*d/4))));if(n==(int)n){ k=(int)n;}elsek=(int)n+1;printf("%d\n",k);}}
}
16进制的简单运算
- 描述
-
现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果。
- 输入
-
第一行输入一个正整数T(0<T<100000)
接下来有T行,每行输入一个字符串s(长度小于15)字符串中有两个数和一个加号或者一个减号,且表达式合法并且所有运算的数都小于31位 - 输出
- 每个表达式输出占一行,输出表达式8进制的结果。
- 样例输入
-
3 29+4823 18be+6784 4ae1-3d6c
- 样例输出
-
44114 100102 6565
这道题放在这里主要想提醒下c语言自带十六进制和八进制转化
#include<stdio.h>//nyoj244
int main(void)
{int n;scanf("%d",&n);getchar();while(n--){int a,b;char c;scanf("%x%c%x",&a,&c,&b);if(c=='+')printf("%o\n",a+b);if(c=='-')printf("%o\n",a-b);}
}
阶乘因式分解(一)
- 描述
-
给定两个数m,n,其中m是一个素数。
将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。
- 输入
-
第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。 - 输出
- 输出m的个数。
- 样例输入
-
2 100 5 16 2
- 样例输出
-
24 15
思路:可以将n的阶层看作m*!(n/m),则可得到n/m个数,再看成m*!(n/m/m),直到n<m
#include<stdio.h>
int main(void)
{int t;scanf("%d",&t);while(t--){int n,m,sum=0;scanf("%d%d",&n,&m);while(n>=m){sum+=n/m;n=n/m;}printf("%d\n",sum);}
}
C语言入门水题总结2相关推荐
- poj入门水题整理1--按刷题顺序解释
1.1000 A+B 就是熟悉平台的一道题,下面有案例 2.1004 Financial Management 描述: Larry毕业之后挣钱了想知道他的财务状况,他现在有他的存款清单,想知道他12个 ...
- 【Go语言入门100题】022 奇偶分家 (10 分) Go语言 | Golang
[题解][PTA团体程序设计天梯赛] L1-022 奇偶分家 (10 分) Go语言|Golang 给定N个正整数,请统计奇数和偶数各有多少个? 输入格式: 输入第一行给出一个正整N(≤1000):第 ...
- 【Go语言入门100题】038 新世界 (5 分) Go语言|Golang
[题解][PTA团体程序设计天梯赛] L1-038 新世界 (5 分) Go语言|Golang 这道超级简单的题目没有任何输入. 你只需要在第一行中输出程序员钦定名言"Hello World ...
- 【Go语言入门100题】021 重要的话说三遍 (5 分) Go语言 | Golang
[题解][PTA团体程序设计天梯赛] L1-021 重要的话说三遍 (5 分) Go语言|Golang 这道超级简单的题目没有任何输入. 你只需要把这句很重要的话 -- "I'm gonna ...
- C语言入门——编程题
1.输出不同整形数据类型在内存中占用多少字节? 首先明确整形数据有哪些: (无符号)字符型:(unsigned)char (无符号)短整型:(unsigned)short (无符号)整形数据:(uns ...
- 【Go语言入门100题】051 打折 (5 分) Go语言|Golang
[题解][PTA团体程序设计天梯赛] L1-051 打折 (5 分) Go语言|Golang 去商场淘打折商品时,计算打折以后的价钱是件颇费脑子的事情.例如原价¥988,标明打7折,则折扣价应该是 ¥ ...
- 牛客网C语言入门刷题(BC1 ~ BC50)
文章目录 BC1 实践出真知 BC2 我是大V BC3 有容乃大 BC6 小飞机 BC7 缩短二进制 BC8 十六进制转十进制 BC9 printf的返回值描述 BC10 成绩输入输出 BC11 学生 ...
- 【Go语言入门100题】044 稳赢 (15 分) Go语言 | Golang
[题解][PTA团体程序设计天梯赛] L1-044 稳赢 (15 分) Go语言|Golang 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编 ...
- 【Go语言入门指南】零基础入门 go 语言 | Golang 入门指南
文章目录 写在前面 全部练习项目都在github这个仓库中`https://github.com/CocaineCong/Golang-Learning` 1. [第一轮]基础部分 1.1 教程 1. ...
最新文章
- 29 Python 多线程简介
- Windows驱动开发 - 内核模式下的字符串操作
- Android基础---获取手机硬件数据(转)
- goland设置goroot_go环境搭建-goland使用、gopath、go命令
- java 日期是否合法_java 中 Date 类型快判断日期是否合法.
- 魔法函数%matplotlib 解决matplotlib画图在Jupter/IPython中不显示
- linux下的定时任务和延迟任务
- 回顾我个人的创业经历
- MySQL之GROUP BY用法误解
- HDU5479 Colmerauer 单调栈+暴力优化
- 2018最新qq的服务器地址,腾讯QQ2018正式版新功能详细介绍
- 力扣刷题思考:347. 前 K 个高频元素
- Enterprise Architect 15 使用指南
- 群体遗传学瓶颈效应bottleneck effect
- MODELSIM报错合集
- 建一个网站需要多少钱
- Translation[VERTEBRA-FOCUSED LANDMARK DETECTION FOR SCOLIOSIS ASSESSMENT]——2021.6.18
- 如何实现上传多个图片并依次展示_如何在一页PPT中插入多张图片,并保持其美感...
- 为何企业级架构日益盛行?
- LeetCode 340. 至多包含 K 个不同字符的最长子串 (滑动窗口)
热门文章
- SQL性能第2篇:查询分析和访问路径制定
- Java面试题--HashMap是什么?
- golang for循环的重新认识
- PHP 安全:如何防范用户上传 PHP 可执行文件
- Sentinel熔断限流器工作原理
- tp5讲一个值传到另外一个控制里_统计起源 第四讲:黑暗中诞生的天才——自由度与标准差...
- : Attribute xmlns was already specified for element web-app.
- Linux 问题故障定位,看这一篇就够了
- Docker三剑客之docker-compose
- Node.js文件的同步异步事件循环