zoukankan      html  css  js  c++  java
  • 2016年湖南省第十二届大学生计算机程序设计竞赛Problem A 2016 找规律归类

    Problem A: 2016

    Time Limit: 5 Sec  Memory Limit: 128 MB

    Description

     给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量:
    1. 1≤a≤n,1≤b≤m;
    2. a×b 是 2016 的倍数。

    Input

    输入包含不超过 30 组数据。
    每组数据包含两个整数 n,m (1≤n,m≤109).

    Output

    对于每组数据,输出一个整数表示满足条件的数量。

    Sample Input

    32 63
    2016 2016
    1000000000 1000000000
    

    Sample Output

    1
    30576
    7523146895502644
    

        题目是全中文的,所以题意方面没什么好说的,也很好理解,主要是考虑做法了。首先数据很大,直接一个一个跑for循环是肯定不够的,不过在样例中把最大的一种情况告诉我们了,可以了解到long long定义是完全够用的,然后再来考虑如何处理。

        因为题目要求的是两个数相乘之后是否是2016的倍数,所以可以把两边分开来看,比如1~2016和2017~4032这两组数据,虽然数字不同,但是这两组和其他数字乘在一起之后判断有多少数字为2016的倍数的话,结果是一样的,所以可以把这两组数都拆分开再来进行运算,这样的话跑for循环只需要跑两遍,只跑到2016就足够了,其余的数再分出来用数组进行储存,记录下来一共有多少组1~2016,在结果上再乘以几就可以了。

        下面AC代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    long long a[2030],b[2030];
    
    int main()
    {
        long long n,m;
        int i,j;
        long long k,t;
        long long cou;
        while(scanf("%lld%lld",&n,&m)!=EOF)
        {
            cou=0;
            //分离n
            k=n/2016;
            t=n%2016;
            for(i=1;i<=t;i++)
            {
                a[i]=k+1;
            }
            for(i=t+1;i<=2016;i++)
            {
                a[i]=k;
            }
            //分离m
            k=m/2016;
            t=m%2016;
            for(i=1;i<=t;i++)
            {
                b[i]=k+1;
            }
            for(i=t+1;i<=2016;i++)
            {
                b[i]=k;
            }
            //计算
            for(i=1;i<=2016;i++)
            {
                for(j=1;j<=2016;j++)
                {
                    if((i*j)%2016==0)
                        cou=cou+a[i]*b[j];
                }
            }
            cout<<cou<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Vue3.0官方文档
    简单实现Vue的双向绑定原理
    小程序使用weapp-qrcode二维码插件,宽高自适应解决方法
    小程序判断ios还是android
    手写实现bind
    手写实现call,apply函数
    React onClick点击事件传参三种写法
    zynq 中断
    zynq_ps端点亮led灯代码
    突然发现自己的很多博客无法显示图片,人都傻了,于是就整理了一早上,全部换成了markdown格式,就好了,希望博客的时间不会对大家造成困扰!!!
  • 原文地址:https://www.cnblogs.com/lmhbk/p/5837812.html
Copyright © 2011-2022 走看看