zoukankan      html  css  js  c++  java
  • Mail.Ru Cup 2018 Round 3 B. Divide Candies

    题目链接
    分析一下题意可以得到题目要求的是满足下面这个 公式的不同的iji,j的方案数;
    (i2+j2)mod   m=0 (n  i,j n)(i^2+j^2)mod m =0 ( n leq i,jleq n).
    当然n2n^2是可以解决的,但是数据范围不允许我们这么做,于是我们可以换个思路,如果一个数ii满足 imod  m=0 imod m=0,那么(i+km)(i+k*m)%m也必然是等于00的,因为任意一个数xx%m的结果必然是小于mm的,于是我们可以m2m^2的复杂度来解决这个问题。在mm的范围内找出所有满足题意的i,ji,j。然后对每一对i,ji,j 进行累加贡献。然后这个问题就解决了。

    #include<bits/stdc++.h>
    
    #define LL long long
    #define fi first
    #define se second
    #define mp make_pair
    #define pb push_back
    
    using namespace std;
    
    LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
    LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
    LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
    const int N = 2e5 +11;
    LL n,m,ans;
    int main(){
    	ios::sync_with_stdio(false);
    	cin>>n>>m;
    	for(int i=0;i<m;i++){
    		for(int j=0;j<m;j++){
    			if((i*i+j*j)%m==0&&i<=n&&j<=n){
    				LL a=(n-i)/m+1,b=(n-j)/m+1;
    				if(!i)a--;
    				if(!j)b--;
    				ans+=a*b;
    			}
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
  • 相关阅读:
    WPF开发进阶
    WPF开发进阶
    java 架构好文章
    Logback 输出 JPA SQL日志 到文件
    Linux Bash Shell j简单入门
    java内存空间简述
    PowerDesigner 16.5 反向PostgreSQL9.01 中 Unable to list the columns. SQLSTATE = 22003不良的类型值 short : t 解决方法
    Java代码自动部署
    Oracle优化技巧
    string类型与ASCII byte[]转换
  • 原文地址:https://www.cnblogs.com/pubgoso/p/10759698.html
Copyright © 2011-2022 走看看