zoukankan      html  css  js  c++  java
  • noip模拟赛 剪纸

    题目描述

    小芳有一张n*m的长方形纸片。每次小芳将会从这个纸片里面剪去一个最大的正方形纸片,直到全部剪完(剩下一个正方形)为止。

    小芳总共能得到多少片正方形纸片?

    输入输出格式

    输入格式:

    一行两个整数nm

    输出格式:

    一行一个整数,总共能得到的纸片数量。

    输入输出样例

    输入样例#1:
    6 4
    输出样例#1:
    3

    说明

    对于30%的数据满足n=1

    对于60%的数据满足n,m10^3​​

    对于100%的数据满足n,m10​^12​​

    分析:一道比较水的题,如果直接按照题目说的来,每次用大的减小的,就有可能出现n = 10^12,m = 1这样的极端情况,为了避免多次相减,使用除法就好了.

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <string>
    
    using namespace std;
    
    long long n, m, ans;
    
    int main()
    {
        scanf("%lld%lld", &n, &m);
        if (n == 1)
        {
            printf("%lld
    ", m / n);
            return 0;
        }
        if (m == 1)
        {
            printf("%lld
    ", n / m);
            return 0;
        }
        else
        {
            while (m != 0 && n != 0)
            {
                if (m > n)
                {
                    long long t = m / n;
                    ans += t;
                    m -= t * n;
                }
                else
                if (n > m)
                {
                    long long t = n / m;
                    ans += t;
                    n -= t * m;
                }
            }
            printf("%lld
    ", ans);
        }
    
        return 0;
    }

     

  • 相关阅读:
    【4N魔方阵】
    【2(2N+1)魔方阵 】
    【二分查找法(折半查找法)】
    【循环搜寻法(使用卫兵)】
    【合并排序法】
    【快速排序法一】
    【快速排序二】
    【快速排序三】
    【数据结构】之 线性表详解
    【计算机网络基础】
  • 原文地址:https://www.cnblogs.com/zbtrs/p/7586467.html
Copyright © 2011-2022 走看看