铺地砖
题目描述
小赛最近承接了一个工程,为一块广场铺设地砖。待铺设的广场是矩形的,大小为N*M平米,业主要求铺设的地砖规格统一,大小为a*a平米。地砖可以超出待铺设的区域,但必须将指定的区域完全覆盖。铺设时,要求地砖边缘需与指定区域边缘平行,且必须用整块的地砖铺设,不允许将地砖破碎铺设。
为节约成本,小赛需要知道铺设最少需要多少地砖。请你帮忙计算她最少需要采购的地砖数。
输入
输入的第一行为一个正整数T,表示有T组测试数据。随后的T行中,每行为一组测试数据。每组测试数据包含由3个正整数构成,分别为N、M和a,其中1<=N, M, a <=10^9。
|
样例输入
1 6 6 4
|
输出
对每组测试数据,单独输出一行,为所需采购的地砖数。
| |
#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值;第二个数字为起点到终点之间的村庄个数。 第二行为起点和村庄、村庄之间、村庄和终点之间的距离。 这些数字都为整数,且范围不能超过一个int型表达的范围。
|
样例输入
7 4 5 6 3 2 2
|
输出
程序输出为至少需要补充食物的次数。
|
样例输出
2 |
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 |
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;
}