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;
    }

     

  • 相关阅读:
    dubbo学习总结二 服务端
    dubbo学习总结一 API
    mybatis中的#和$的区别
    Spring boot配置注意事项
    dubbo 学习
    框架发展过程
    使用OkHttp模拟登陆LeetCode
    Java设计模式——建造者模式(创建型模式)
    Java设计模式——单例模式(创建型模式)
    Java中static的用法
  • 原文地址:https://www.cnblogs.com/zbtrs/p/7586467.html
Copyright © 2011-2022 走看看