zoukankan      html  css  js  c++  java
  • CodeForces 1389 E Calendar Ambiguity

    https://codeforc.es/problemset/problem/1389/E

    其实就是让你列公式自己算一次,

    (x*d - d + y) %w = (y*d - d + x)%w

    最后化简成 : (d-1)*(y - x)%w = 0;

    可知y-x(y > x)必须是w/gcd (d-1,w)的倍数

    可以说是很巧妙了吧。x和y的范围必须是len = min(d,m)

    假设f(a)表示y-x=a时y的可选个数,f (a) = len - a

    答案就是sigm f(i)        for( i = x;i<=len;i+=x);

    简化一下

    具体看代码就好

    #include<iostream>
    #include<cstring>
    #include<queue>
    #include<algorithm>
    using namespace std;
    const int maxn = 2e5+11;
    typedef long long ll;
    ll len;
    ll f(ll x){
    	return len - x;
    }
    int main(){
    	int t;
    	cin>>t;
    	while(t--){
    		ll m,d,w;
    		cin>>m>>d>>w;
    		
    		len = min(m,d);
    		
    		ll x = __gcd(d-1,w);
    		x = w/x;
    		
    		ll ans = 0;
    		ll n = len/x;
    		ans = n*len - n*(n+1)*x/2;
    		cout<<ans<<endl;
    		
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    搜索引擎
    Mybatis springmvc面试题
    spring框架面试题
    数据库
    javaWEB面试题
    JavaWeb
    SpringCloud2
    网络
    比特币网络架构及节点发现分析
    Github推荐一个国内牛人开发的超轻量级通用人脸检测模型
  • 原文地址:https://www.cnblogs.com/lesning/p/13919601.html
Copyright © 2011-2022 走看看