首页 > 其他分享 >codeforces 1750_D

codeforces 1750_D

时间:2022-11-08 17:46:41浏览次数:64  
标签:int codeforces back ans include 1750

https://codeforces.com/contest/1750/problem/D

#include<iostream>
#include<vector>
#include<cmath>
#include<map>
#include<unordered_map>
#include<unordered_set>
#include<set>
#include<string>
#include<stack>
#include<algorithm>
#include<bitset>
#include<queue>
#include<iomanip>
#include<cstring>
#include <numeric>
using namespace std;
const int mod=998244353;
typedef long long ll;
vector<int> sp(ll n){
    vector<int>res;
    if(n%2==0) res.push_back(2);
    while(n%2==0) n=n/2;
    for(int i=3;i*i<=sqrt(n);i+=2){
        if(n%i==0) res.push_back(i);
        while(n%i==0) n=n/i;
    }
    return res;
}
int main(){
    int t;
    cin>>t;
    while(t--){
        int n,m,pd=0;
        cin>>n>>m;
        vector<int>v(n);
        for(int i=0;i<n;i++) cin>>v[i];
        for(int i=0;i<n-1;i++){
            if(v[i]%v[i+1]!=0) pd=1;
        }
        if(pd) cout<<0<<endl;
        else{
            ll ans=1;
            for(int i=0;i<v.size()-1;i++){
                if(v[i]==v[i+1]) {
                    ans=(ans*(m/v[i]))%mod;
                    continue;
                }
                ll x=v[i]/v[i+1];
                ll base=m/v[i+1];
                vector<int>fc=sp(x);
                fc.push_back(x);
                int n=fc.size();
                for(int j=0;j<(1<<n);j++){
                    ll sign=1,a=j,b=1;
                    for(int k=0;k<n;k++){
                        if(a&1) {
                            sign*=-1;
                            b=(b*fc[k]);
                        }
                        a=a>>1;
                    }
                    base+=sign*b;
                }
                ans=(ans*base)%mod;
            }
            cout<<ans<<endl;
        }
    }
    system("pause");
}

标签:int,codeforces,back,ans,include,1750
From: https://www.cnblogs.com/God-Destiny/p/16870546.html

相关文章

  • Codeforces试题乱做 Part9
    他挥毫泼墨落笔她舞袖梦里佳期戏中情戏中意陌路人相逢在花天锦地\(\text{[CF1736E]SwapandTake}\)\(\color{green}{\text{[EASY]}}\)我们考虑最终最优的答案中......
  • CF1743 Codeforces Round #832 (Div. 2)
    A.TwoGroups签到题,把正负数分开放再相减即可.赛后从大佬们那得知也可以直接加的,最后取个abs.膜拜大佬!B.BANBAN构造.显然每次交换最多可以破坏前面一个BAN,破坏后面......
  • Codeforces Subsequences
    题目:KarllikesCodeforcesandsubsequences.HewantstofindastringoflowercaseEnglishlettersthatcontainsatleastksubsequencescodeforces.Outofall......
  • Codeforces Round #721 (Div. 2) B2. Palindrome Game (hard version)
    ​​传送门​​Theonlydifferencebetweentheeasyandhardversionsisthatthegivenstringsintheeasyversionisinitiallyapalindrome,thisconditioni......
  • Codeforces Round #713 (Div. 3) F
    F.Education考虑贪心显然我们每次只有这样一种情况就是钱够了就升级然后到一个位置就一直不动了不可能我们先在一个位置钱赚够了再赚几轮再去下一级那么证明我们......
  • 【题解】codeforces 1746B Rebellion
    题意:给定一个只包含0和1的数组a,可以对a进行以下操作:选定两个下标不同的元素ai和aj,将ai加到aj上,再从数组中删除ai。问最少操作多少次,可以让数组a变成单调非下降子序列(即ai......
  • CF1750 记录
    下面是过了的题。IndirectSort可以发现\(1\)在\(a_1\)处,则其他位置可以自由交换;否则\(1\)的对应数不能变大,也不能换到\(a_1\)上。所以有一组合法操作的充要条件......
  • Educational Codeforces Round 113 (Rated for Div. 2) D
    D.InconvenientPairs观察完样例我们发现发现有且仅有一个共同区间的才是一对这样我们直接记录x,y二分出他在哪个区间内check在共同区间的个数即可但是还有另一种解......
  • Codeforces Round #732 (Div. 1) B
    B.AquaMoonandChess简单计数观察样例我们发现如果是00111100这样是11是随便可以放置在任何地方但是要是011100这样的就会有个单独的1出来我们显然可以这样011......
  • Codeforces Round #832 (Div. 2) D (预处理+二分)
    D.YetAnotherProblem观察题干发现一定要是odd考虑发掘性质发现之后还会将[l,r]长度为奇数的区间全部赋值成这个区间的异或和我们设长度为lenlen-1个偶数个异或为......