zoukankan      html  css  js  c++  java
  • # [银联复赛]-整数对(数论)

    [银联复赛]-整数对:数论

    题链:计蒜客

    题意

    给定(n,m,p(1leq n,m leq 10^9,1 leq p leq 10^5)),求满足(a*b=k*p(1 leq a leq n,1leq b leq m,k为任意整数))的整数对((a,b))的数量

    思路

    本题最精彩的部分是(a)的构造(k)为自由变量,假设(k_1=a/p,r=a\%p(除法为高级语言的除法),则a=k_1*p+r)

    这里添加一点解释:

    [1 leq a leq n并且a=k_1*p+r Rightarrow k_1=frac{(n-r)}{p},(k_1)_{max}=x=(n/p) $$. $r$是自由变量,故需要枚举$r$的值,某一确定的$r$值下,整数对的个数为$k_1$的种数乘上在m范围内b的可取种数 ### AcCode ```c++ #include <iostream> #include <algorithm> using namespace std; #define LL long long LL n,m,p,t,a,b,x; LL res; int main(){ cin>>t; while(t--){ res=0; cin>>n>>m>>p; x=n/p; for(LL r=0;r<p;r++){//枚举r的取值 if(r==0)a=x;//[0,x] else if(r>0&&r<=n%p)a=x+1; else a=x; b=m/(p/__gcd(r,p)); res+=a*b; } cout<<res<<endl; } return 0; } ```]

  • 相关阅读:
    frame、center和bounds
    UILabel
    UIColor
    Url_Filter(Code)
    listView介绍
    C# 常用正则
    C++指针的概念
    指针所具有的四个要素:
    windows_sendEmail
    工作笔记
  • 原文地址:https://www.cnblogs.com/sstealer/p/11378138.html
Copyright © 2011-2022 走看看