zoukankan      html  css  js  c++  java
  • 合肥学院第二届卓越IT-程序设计大赛E+J

    E链接
    小飞有nn的魔法纸片(可以变出糖果), 现在有m个人来找小飞玩游戏, 小飞希望用魔法纸片来使朋友们开心,纸片可以被随便裁剪,nn的魔法纸片可以裁剪成任意大小的小魔法纸片,小飞通过pubgoso得知,ij尺寸的纸片可以产生(ii+jj)个糖果。小飞希望裁剪的纸片可以让每个朋友分到一样多的糖果,这样他的朋友们就会很开 心,小飞希望知道有多少种合理的裁剪方法使得每个朋友都开心呢?请帮他回答这个问题。

    分析一下题意可以得到题目要求的是满足下面这个 公式的不同的i,j的方案数(i2+j2)mod   m=0 (n  i,j n)(i^2+j^2)mod m =0 ( n leq i,jleq n)
    代码如下

    #include <bits/stdc++.h>
    using namespace std;
    #define LL long long
    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;
    }
    int main(){
        LL n,m;
        cin>>n>>m;
        LL ans=0;
        for(LL i=0;i<m;i++){
            for(LL 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==0)a--;
                    if(j==0)b--;
                    ans+=a*b;
                }
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    

    J链接
    看完题目就知道了,是E的升级版,思路一样

    #include <set>
    #include <map>
    #include <queue>
    #include <stack>
    #include <math.h>
    #include <bitset>
    #include <vector>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #define MAXN 1010100
    #define LL long long
    #define fi first
    #define se second
    #define mp make_pair
    #define pb push_back
    #define ll __int64
    #define INF 0x7fffffff
    #define cs(s) freopen(s,"r",stdin)
    #define mem(x) memset(x,0,sizeof(x))
    #define PI acos(-1)
    #define eps 1e-10
    using namespace std;
    int gcd(int a,int b){return b?gcd(b,a%b):a;}
    int lcm(int a,int 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;}
    //head
    const LL mod=1e8+7;
    int main(){
        ios::sync_with_stdio(false);
        int n;
        LL m,t,pp=1e18;
        for(cin>>t;t;t--){
            cin>>n>>m;
            LL ans=0;
            for(int i=0;i<m;i++){
                for(int j=0;j<m;j++){
                    for(int k=0;k<m;k++){
                        LL mid=1;
                        int flag=0;
                        if((1ll*i*i+1ll*j*j*j+1ll*k*k*k*k)%m==0){
                            if(i<=n)mid=mid*((n-i)/m+(i==0?0:1))%mod,flag=1;
                            if(j<=n)mid=mid*((n-j)/m+(j==0?0:1))%mod,flag=1;
                            if(k<=n)mid=mid*((n-k)/m+(k==0?0:1))%mod,flag=1;
                            if(flag)ans=(ans+mid)%mod;
                        }
                    }
                }
            }
            cout<<ans%mod<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    ArrayList与LinkedList区别
    ArrayList底层原理
    nginx启用https访问
    云服务器搭建 Nginx 静态网站
    在云服务器上(CentOS)上安装Node
    文本超出显示省略号CSS
    vue使用改变element-ui主题色
    vue中的select框的值动态绑定
    vue项目对axios的全局配置
    使用crypto-js对数据进行AES加密、解密
  • 原文地址:https://www.cnblogs.com/pubgoso/p/10759732.html
Copyright © 2011-2022 走看看