赛码解题报告(七)
2016-09-26 20:59
197 查看
铺地砖
题目描述
小赛最近承接了一个工程,为一块广场铺设地砖。待铺设的广场是矩形的,大小为N*M平米,业主要求铺设的地砖规格统一,大小为a*a平米。地砖可以超出待铺设的区域,但必须将指定的区域完全覆盖。铺设时,要求地砖边缘需与指定区域边缘平行,且必须用整块的地砖铺设,不允许将地砖破碎铺设。
为节约成本,小赛需要知道铺设最少需要多少地砖。请你帮忙计算她最少需要采购的地砖数。
直接%判断能不能整除,不能整除则+1;
#include<stdio.h>
#include<math.h>
int main()
{
long m,n,a;
int t,k;
long i,j,count;
scanf("%d",&t);
for(k=0;k<t;k++)
{
scanf("%ld %ld %ld",&n,&m,&a);
if((n%a)==0)
{
i = n/a;
}
else
{
i = n/a+1;
}
if((m%a) ==0)
{
j = m/a;
}
else
{
j = m/a+1;
}
count=i*j;
printf("%ld\n",count);
}
return 0;
}
小赛旅游
题目描述
小赛很想到外面的世界看看,于是收拾行装准备旅行。背了一个大竹筐,竹筐里装满了路上吃的,这些吃的够它走N公里。为了规划路线,它查看了地图,沿途中有若干个村庄,在这些村庄它都可以补充食物。但每次补充食物都需要花费时间,在它竹筐的食物足够可以走到下一个村庄的时候它就不用补充,这样背起来不累而且不花费时间。地图上可以看到村庄之间的距离,现在它要规划一下它的路线,确定在哪些村庄补充食物可以使沿途补充食物的次数最少。你能帮帮小赛吗?
本题直接把每个距离判断一下即可
#include<iostream>
using namespace std;
int main()
{
int n, m;
while (cin >> n >> m){
int *country = new int[m + 2];
for (int i = 0; i < m + 1; i++){
cin >> country[i];
if (country[i]>n){
cout << 0 << endl; return 0;
}
}
int need = 0;
int sum = 0;
for (int i = 0; i < m + 1; i++){
if (sum>n){
need++;
sum = country[i];
}
sum += country[i];
}
cout << need << endl;
}
return 0;
}
小球的距离
题目描述
小赛和三个小朋友一起玩小球,他们是一种新玩法。他们站在楼房的不同层,假设小赛站的楼层距离地面N米,球从小赛手里自由落下,每次落地后反跳回原高度的一半;再落下,再反跳回原高度的一半。小赛和三个小朋友站在不同的楼层,同时放下手中的小球,当小球全部落到地面不跳时,求4个小球一共经过了多少米?(数字都为整数)
逐个小球求并相加
#include<stdio.h>
int main(){
int n;
int sum=0;
for(int i=0;i<4;i++){
scanf("%d",&n);
while(n>0){
sum+=(n+n/2);
n=n/2;
}
}
printf("%d\n",sum);
return 0;
}
题目描述
小赛最近承接了一个工程,为一块广场铺设地砖。待铺设的广场是矩形的,大小为N*M平米,业主要求铺设的地砖规格统一,大小为a*a平米。地砖可以超出待铺设的区域,但必须将指定的区域完全覆盖。铺设时,要求地砖边缘需与指定区域边缘平行,且必须用整块的地砖铺设,不允许将地砖破碎铺设。
为节约成本,小赛需要知道铺设最少需要多少地砖。请你帮忙计算她最少需要采购的地砖数。
输入 输入的第一行为一个正整数T,表示有T组测试数据。随后的T行中,每行为一组测试数据。每组测试数据包含由3个正整数构成,分别为N、M和a,其中1<=N, M, a <=10^9。 | 样例输入 1 6 6 4 |
输出 对每组测试数据,单独输出一行,为所需采购的地砖数。 |
#include<stdio.h>
#include<math.h>
int main()
{
long m,n,a;
int t,k;
long i,j,count;
scanf("%d",&t);
for(k=0;k<t;k++)
{
scanf("%ld %ld %ld",&n,&m,&a);
if((n%a)==0)
{
i = n/a;
}
else
{
i = n/a+1;
}
if((m%a) ==0)
{
j = m/a;
}
else
{
j = m/a+1;
}
count=i*j;
printf("%ld\n",count);
}
return 0;
}
小赛旅游
题目描述
小赛很想到外面的世界看看,于是收拾行装准备旅行。背了一个大竹筐,竹筐里装满了路上吃的,这些吃的够它走N公里。为了规划路线,它查看了地图,沿途中有若干个村庄,在这些村庄它都可以补充食物。但每次补充食物都需要花费时间,在它竹筐的食物足够可以走到下一个村庄的时候它就不用补充,这样背起来不累而且不花费时间。地图上可以看到村庄之间的距离,现在它要规划一下它的路线,确定在哪些村庄补充食物可以使沿途补充食物的次数最少。你能帮帮小赛吗?
输入 第一行有两个数字,第一个数字为竹筐装满可以走的公里数,即N值;第二个数字为起点到终点之间的村庄个数。 bd76 第二行为起点和村庄、村庄之间、村庄和终点之间的距离。 这些数字都为整数,且范围不能超过一个int型表达的范围。 | 样例输入 7 4 5 6 3 2 2 |
输出 程序输出为至少需要补充食物的次数。 | 样例输出 2 |
#include<iostream>
using namespace std;
int main()
{
int n, m;
while (cin >> n >> m){
int *country = new int[m + 2];
for (int i = 0; i < m + 1; i++){
cin >> country[i];
if (country[i]>n){
cout << 0 << endl; return 0;
}
}
int need = 0;
int sum = 0;
for (int i = 0; i < m + 1; i++){
if (sum>n){
need++;
sum = country[i];
}
sum += country[i];
}
cout << need << endl;
}
return 0;
}
小球的距离
题目描述
小赛和三个小朋友一起玩小球,他们是一种新玩法。他们站在楼房的不同层,假设小赛站的楼层距离地面N米,球从小赛手里自由落下,每次落地后反跳回原高度的一半;再落下,再反跳回原高度的一半。小赛和三个小朋友站在不同的楼层,同时放下手中的小球,当小球全部落到地面不跳时,求4个小球一共经过了多少米?(数字都为整数)
输入 输入4个数字,分别表示四个小球距离地面的高度。所有输入的数字都为整数,范围不能超过整数所能表示的最大值。 | 样例输入 100 90 80 70 |
输出 输出为四个小球经过的总长度。 | 样例输出 996 |
#include<stdio.h>
int main(){
int n;
int sum=0;
for(int i=0;i<4;i++){
scanf("%d",&n);
while(n>0){
sum+=(n+n/2);
n=n/2;
}
}
printf("%d\n",sum);
return 0;
}
相关文章推荐
- codeforces Round #274(div2) B解题报告
- 杭电OJ 1102(Constructing Roads)解题报告
- Problem G: 补提交 (解题报告)
- [Leetcode] 549. Binary Tree Longest Consecutive Sequence II 解题报告
- pku_2054 dp Color a tree dp 解题报告
- LeetCode: Jump Game Total 解题报告
- hdu 1394 解题报告 Minimum Inversion Number
- LeetCode: Maximum Product Subarray 解题报告
- String to Integer (atoi)解题报告
- codeforces Round #260(div2) B解题报告
- poj1753解题报告(1):DFS算法
- 计蒜客 菜鸟物流的运输网络 解题报告
- [Leetcode] 561. Array Partition I 解题报告
- [解题报告]Codeforces 105D Entertaining Geodetics
- codeforces Round #259(div2) A解题报告
- POJ 1661 解题报告
- Leetcode Add Two Numbers解题报告
- 【LeetCode】Search in Rotated Sorted Array 解题报告
- Hdu 1520 树形DP 解题报告
- LeetCode: Merge Intervals 解题报告