赛码解题报告(七)

来源:互联网 发布:java手动线程池使用 编辑:程序博客网 时间:2024/05/01 18:46

铺地砖

题目描述

小赛最近承接了一个工程,为一块广场铺设地砖。待铺设的广场是矩形的,大小为N*M平米,业主要求铺设的地砖规格统一,大小为a*a平米。地砖可以超出待铺设的区域,但必须将指定的区域完全覆盖。铺设时,要求地砖边缘需与指定区域边缘平行,且必须用整块的地砖铺设,不允许将地砖破碎铺设。

 

为节约成本,小赛需要知道铺设最少需要多少地砖。请你帮忙计算她最少需要采购的地砖数。


输入

输入的第一行为一个正整数T,表示有T组测试数据。随后的T行中,每行为一组测试数据。每组测试数据包含由3个正整数构成,分别为N、M和a,其中1<=N, M, a <=10^9。


样例输入

1

6 6 4


输出

对每组测试数据,单独输出一行,为所需采购的地砖数。



直接%判断能不能整除,不能整除则+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公里。为了规划路线,它查看了地图,沿途中有若干个村庄,在这些村庄它都可以补充食物。但每次补充食物都需要花费时间,在它竹筐的食物足够可以走到下一个村庄的时候它就不用补充,这样背起来不累而且不花费时间。地图上可以看到村庄之间的距离,现在它要规划一下它的路线,确定在哪些村庄补充食物可以使沿途补充食物的次数最少。你能帮帮小赛吗?

输入

第一行有两个数字,第一个数字为竹筐装满可以走的公里数,即N值;第二个数字为起点到终点之间的村庄个数。

第二行为起点和村庄、村庄之间、村庄和终点之间的距离。

这些数字都为整数,且范围不能超过一个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;
}
0 0
原创粉丝点击