链接:https://ac.nowcoder.com/acm/problem/52800
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
Special Judge, 64bit IO Format: %lld

题目描述

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

输入描述:

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

输出描述:

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

输入

32 63

输出

1
示例2

输入

2016 2016

输出

30576
示例3

输入

1000000000 1000000000

输出

7523146895502644


思路:
a*b%mod ==0 -> (a%mod)*(b%mod)%mod ==0
所以 求a*b=k*2016即(a*2016+a1)(b*2016+b1)=k*2016 ->a*b*2016^2+(a+b)*2016+a1*b1 = k*2016;
那么a*b要是2016的倍数的话,就要满足a1*b1是2016的倍数
1<=a1<=2015,1<=b1<=2015;
这里有两种做法
方法一:
正向思维:就是直接求ans; 代码:
#include<iostream>
#include<math.h>
using namespace std;
typedef long long ll;
int main(){
ll i,j,ans,a,b,n,m;//i,j其实是余数
while(cin>>n>>m){
ans=;
for(i=;i<=min((ll),n);i++){//这里是2016,因为是直接求ans的,所以要到边界2016,相当于正好是倍数关系,这里是1-2016,而不能是0-2015
        for(j=;j<=min((ll),m);j++){
if(i*j%==){
a=(n-i)/+;//加一就是包括自己,比如说4033=(2*2016+1),中a=3,就是包括了1,2017,4033这三个数
b=(m-j)/+;
ans+=a*b;
}
}
}
cout<<ans<<endl;
}
return ;
}
这题其实是有点暴力的,就是把余数i从1一直到2016全部遍历一遍,然后j也是,把i*J==2016的全算进去,不过是聪明的暴力

方法二:
逆向思维:n*m-Ans =ans;
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
int main(){
int n,m;
while(cin >> n >> m){
long long ans = (ll)n * m;
for(int i = ; i <= min(,n); i++){//这道题是逆向思维,i这里是2015,因为是做减法,就是说把i*j!=2016的减去,i%2016的余数是从1-2015,所以这里是2015
for(int j = ; j <= min(,m); j++){
if(i * j % != )
ans -= (ll)((n - i) / + ) * ((ll)(m - j) / + );
}
}
cout << ans <<endl;
}
return ;
}

2019牛客国庆集训派对day7 A 2016的更多相关文章

  1. 计算几何板子题【2019牛客国庆集训派对day7——三角形和矩形】【多边形相交的面积】

    链接:https://ac.nowcoder.com/acm/contest/1112/J来源:牛客网 题目描述 Bobo 有一个三角形和一个矩形,他想求他们交的面积. 具体地,三角形和矩形由 8 个 ...

  2. 2019牛客国庆集训派对day5

    2019牛客国庆集训派对day5 I.Strange Prime 题意 \(P=1e10+19\),求\(\sum x[i] mod P = 0\)的方案数,其中\(0 \leq x[i] < ...

  3. 2019 牛客国庆集训派对day1-C Distinct Substrings(exkmp+概率)

    链接:https://ac.nowcoder.com/acm/contest/1099/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  4. 2019牛客国庆集训派对day1(A, B E F K)

    链接:https://ac.nowcoder.com/acm/contest/1099#question A:可知符合条件的图中间肯定存在一个由1构成的矩形,找到由1构成矩形的边界,判断出现的1的数量 ...

  5. 牛客国庆集训派对Day7 Solution

    A    Relic Discovery 水. #include <bits/stdc++.h> using namespace std; int t, n; int main() { s ...

  6. 2019牛客国庆集训派对day3 买一送一

    题目链接: 题意:有n个点,n-1条单向边,每个点都销售一类商品 问从点1开始走,买第一样商品类型为x,买第二样商品类型为y,问不同有序对<x,y>的数量 解法: col[i]表示这个点的 ...

  7. 2019牛客国庆集训派对day1 K题 双向链表练习题 splay区间翻转

    题目链接: 解法: 先建n颗平衡树,合并的时候将a中最右的结点翻转到根节点,b中最左的结点翻转到根节点,对合并后的根节点进行标记. #include <bits/stdc++.h> usi ...

  8. 2019牛客国庆集训派对day1

    C 存每个值存在的位置,枚举末尾的值,再枚举前面的值,哈希二分出最长相同的,即剩下的为不同的 D \(f_{i,j,k}\)为前i位,最后一个3因子在j,次因子在k G bitset处理有多少位置符合 ...

  9. 2019牛客国庆集训派对day3

    E. Grid 大意: 给定$n\cdot m$个点的图, 初始无边, $q$个操作, $(1,a,b)$表示第$a$列到第$b$列全连起来, $(2,a,b)$表示把第$a$行到第$b$行全连起来, ...

随机推荐

  1. PAT甲级——A1145 HashingAverageSearchTime【25】

    The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...

  2. PHP数组循环遍历的几种方式

    PHP数组循环遍历 1.for循环 <?php //语法 for (init counter; test counter; increment counter) { code to be exe ...

  3. 2.3 Nginx服务的启停控制

    在Linux平台下,控制Nginx服务的启停有多种方法 2.3.1 Nginx服务的信号控制 在Nginx服务的启停办法中,有一类是通过信号机制来实现的,Nginx服务器的信号控制如下: Nginx服 ...

  4. shell /dev/null

    /dev/null表示空设备,这里就是把日志记录到空设备里,就是不记录日志,Null 是一特殊指标值(或是一种物件参照 reference)表示这个指标并不指向任何的物件. 是一个特殊的文件,写入到它 ...

  5. leetcode.位运算.136只出现一次的元素-Java

    1. 具体题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1 ...

  6. vue对象侦测

    http://blog.csdn.net/yihanzhi/article/details/74200618 数组:this.$set(this.arr,index,value)

  7. 启动Process实现多任务

    from multiprocessing import Process import time '''multiprocessing模块1.跨平台的多进程模块2.提供了一个Process类的实例代表一 ...

  8. 2、Python 接口框架

    common:存放通用的工具类 config:存放配置文件信息 result:存放result.html run_suite.py:最后执行的文件 1.excel_util:利用 openpyxl 进 ...

  9. poj 3294 后缀数组+二分

    题目大意: 给定n个字符串,求出现在不小于k个字符串中的最长子串 基本思路: 二分长度,统计个数,一般套路,就是这个跟说好的不一样啊,我非得开2倍才不re,真他妈不爽,先二分找出长度,然后根据长度输出 ...

  10. Qt 【关于跳转页面后当前页面(委托delegate)数据丢失的问题】

    这个是一个很低级的错误,之前po主急着完成任务,也是没注意看,窗口跳窗如下图所示: 这个过程中都是click促发槽然后B*pB,pB->show,同理A*pA,pA->show,这个过程中 ...