zoukankan      html  css  js  c++  java
  • hdu 4710 Balls Rearrangement 数论

    这个公倍数以后是循环的很容易找出来,然后循环以内的计算是打表找的规律,规律比较难表述,自己看代码吧。。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    using namespace std;
    long long n,a,b;
    long long lcd(int a,int b)
    {
        long long ret=a;
        ret*=b;
        int tmp;
        while(a%b)
        {
            tmp=a%b;
            a=b;
            b=tmp;
        }
        return ret/b;
    }
    long long cal(long long tmp)
    {
    //    cout<<tmp<<endl;
        long long sum=0,ret,i;
    //    for(i=0;i<tmp;i++)
    //    sum+=fabs(i%a-i%b);
    //    return sum;
        for(i=0;i+a-1<tmp;i+=a)
        {
            ret=b-(i%b);
            if(ret>=a)
            sum+=(i%b)*a;
            else
            sum+=ret*(i%b)+(a-ret)*(b-(i%b));
        }
        for(;i<tmp;i++)
        sum+=fabs(i%a-i%b);
        return sum;
    }
    int main()
    {
    //    freopen("in.txt","r",stdin);
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%lld %lld %lld",&n,&a,&b);
            if(a>b) swap(a,b);
            long long m=lcd(a,b);
            long long ans=cal(m);
            ans*=n/m;
            ans+=cal(n%m);
            cout<<ans<<endl;
        }
        return 0;
    }


  • 相关阅读:
    倒水问题(BFS)
    小程序整理
    微信小程序--录音
    mpvue
    hbuilder 打包 vueAPP
    react rem
    react 关闭eslint 配置
    react axios 配置
    react 路由之react-router-dom
    react mobx 装饰器语法配置
  • 原文地址:https://www.cnblogs.com/pangblog/p/3310756.html
Copyright © 2011-2022 走看看