当前位置: 首页 > news >正文

科技网站大全品牌网站开发公司

科技网站大全,品牌网站开发公司,中国计算机软考网,网站建设请示报告G.双生 #质数筛 #欧拉筛 #数学 题目 思路 要使xyzxyzxyz不是完全平方数,设axyzp1q1p2q2…pkqkaxyzp_{1}^{q_{1}}p_{2}^{q_{2}}\dots p_{k}^{q_{k}}axyzp1q1​​p2q2​​…pkqk​​,则有(∑i1kqi)%21\left( \sum_{i1}^kq_{i} \right)\%21(∑i1k​qi​)…

G.双生

#质数筛 #欧拉筛 #数学

题目

image

思路

要使xyzxyzxyz不是完全平方数,设a=xyz=p1q1p2q2…pkqka=xyz=p_{1}^{q_{1}}p_{2}^{q_{2}}\dots p_{k}^{q_{k}}a=xyz=p1q1p2q2pkqk,则有(∑i=1kqi)%2=1\left( \sum_{i=1}^kq_{i} \right)\%2=1(i=1kqi)%2=1

为了方便计算,设f(a)=∑i=1kqif(a)=\sum_{i=1}^kq_{i}f(a)=i=1kqi,即让f(a)%2=1f(a)\%2=1f(a)%2=1

注意到f(xy)=f(x)+f(y)f(xy)=f(x)+f(y)f(xy)=f(x)+f(y),则f(a)=f(xyz)=f(x)+f(y)+f(z)f(a)=f(xyz)=f(x)+f(y)+f(z)f(a)=f(xyz)=f(x)+f(y)+f(z)

若存在f(x)f(x)f(x)为偶,则可选取f(y),f(z)f(y),f(z)f(y),f(z)同为奇或同为偶使得f(xyz)=0f(xyz)=0f(xyz)=0,舍去

若不存在f(x)f(x)f(x)为偶,即f(x)f(x)f(x)为奇,那么f(y),f(z)f(y),f(z)f(y),f(z)必然也为奇,f(xyz)=1f(xyz)=1f(xyz)=1恒成立

因此题目便转换为了求n2\frac{n}{2}2nf(x)%2=1f(x)\%2=1f(x)%2=1的数xxx,用欧拉筛o(n)o(n)o(n)预处理即可

代码实现

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<queue>
#include<cmath>
#include<unordered_map>
#include<numeric>
using namespace std;
using ll = long long;
#define rep(i, a, b) for(ll i = (a); i <= (b); i ++)
#define per(i, a, b) for(ll i = (a); i >= (b); i --)
#define see(stl) for(auto&ele:stl)cout<<ele<<" "; cout<<'\n';
constexpr ll inf = 1e9 + 5;
// #define int ll
constexpr ll  mod=998244353;vector<ll>prime,vis;
vector<bool>cnt;
void sieve(ll len) {vis.assign(len + 1, 0);prime.reserve(len+1);cnt.resize(len+1,0);prime.push_back(0);rep(i, 2, len) {if (!vis[i])prime.push_back(i);for (ll j = 1; i * prime[j] <= len&&j<prime.size(); j++) {vis[prime[j] * i] = 1;if (i % prime[j] == 0)break;}}rep(i,2,len){int cnt0=0,now=i;for(int j=1;prime[j]*prime[j]<=now;j++){while(now&&now%prime[j]==0)cnt0++,now/=prime[j];}if(now!=1)cnt0++;if(cnt0&1)cnt[i]=1;}
}void eachT() {int n;cin>>n;vector<int>ans;ans.reserve(n/2);rep(i,1,n)if((ans.size()<n/2)&&cnt[i])ans.push_back(i);see(ans);
}
signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);ll t = 1;sieve(1e6+5);cin >> t;while (t--) { eachT(); }
}

J.象牙

#gcd #数学

题目

image

思路

看见本题的第一个思路便是想利用式子:
gcd(ac,bc)=gcd(a,b)cgcd(a^c,b^c)=gcd(a,b)^c gcd(ac,bc)=gcd(a,b)c
由于gcd(ab,cd)gcd(a^b,c^d)gcd(ab,cd)的幂次不尽相同,所以尝试主动构造相同的进行分布计算:
gcd(ab,cd)=gcd(ad+b−d,cd)=gcd(ad×ab−d,cd)gcd(a^b,c^d)=gcd(a^{d+b-d},c^d)=gcd(a^d\times a^{b-d},c^d) gcd(ab,cd)=gcd(ad+bd,cd)=gcd(ad×abd,cd)
接下来便思考如何将gcdgcdgcd中的乘法分解开:
gcd(a×b,c)=gcd(a,c)×gcd(b,cgcd(a,c))gcd(a\times b,c)=gcd(a,c)\times gcd\left( b, \frac{c}{gcd(a,c)} \right) gcd(a×b,c)=gcd(a,c)×gcd(b,gcd(a,c)c)
这实际上可以用容斥来理解,要求a×ba\times ba×bccc的公共部分,那么就等于aaaccc的公共部分再加上bbbccc的公共部分,再减去a,b,ca,b,ca,b,c的公共部分

因此带入上式:
gcd(ad×ab−d,cd)=gcd(ad,cd)×gcd(ab−d,cdgcd(ad,cd))=gcd(a,c)d×gcd(ab−d,(cgcd(a,c))d)\begin{align} gcd(a^d\times a^{b-d},c^d)&=gcd(a^d,c^d)\times gcd\left( a^{b-d}, \frac{c^d}{gcd(a^d,c^d)} \right)\\ \\ &=gcd(a,c)^d\times gcd\left( a^{b-d},\left( \frac{c}{gcd(a,c)} \right)^d \right) \end{align} gcd(ad×abd,cd)=gcd(ad,cd)×gcd(abd,gcd(ad,cd)cd)=gcd(a,c)d×gcd(abd,(gcd(a,c)c)d)
观察第二项gcdgcdgcd,又是一个形如gcd(ab,cd)gcd(a^b,c^d)gcd(ab,cd)的算式,因此可以通过递归求解

gcd(a,c)=1gcd(a,c)=1gcd(a,c)=1时,原式退化为gcd(ab−d,cd)gcd(a^{b-d},c^d)gcd(abd,cd),由gcdgcdgcd的交换性质,实际上这个式子可以一直使gcdgcdgcd中两个数的幂次不断减小,最终必然变为gcd(a,c)gcd(a,c)gcd(a,c),答案即为1
因此gcd(a,c)=1gcd(a,c)=1gcd(a,c)=1即为终止条件

ps:本题卡常非常严重,赛时用函数递归一直在TLETLETLE,最终使用了constexprconstexprconstexpr加速以及迭代写法才最终过了…

代码实现

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<queue>
#include<cmath>
#include<unordered_map>
#include<numeric>
using namespace std;
using ll = long long;
#define rep(i, a, b) for(ll i = (a); i <= (b); i ++)
#define per(i, a, b) for(ll i = (a); i >= (b); i --)
#define see(stl) for(auto&ele:stl)cout<<ele<<" "; cout<<'\n';
constexpr ll inf = 1e9 + 5;
// #define int ll
constexpr ll  mod=998244353;
constexpr ll qpow(ll a,ll b){ll ans=1;a%=mod;while(b>0){if(b%2){ans*=a;ans%=mod;}a*=a;a%=mod;b>>=1;}return ans%mod;
}void eachT() {ll a,b,c,d;cin>>a>>b>>c>>d;ll ans=1;while(1){if(b==d){ans*=qpow(gcd(a,c),b);ans%=mod;break;}if(b>d){ll G=gcd(a,c);if(G==1)break;ans*=qpow(G,d);ans%=mod;c/=G;b-=d; }else{ll G=gcd(a,c);if(G==1)break;ans*=qpow(G,b);ans%=mod;a/=G;d-=b; }        }cout<<ans<<'\n';
}
signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);ll t = 1;cin >> t;while (t--) { eachT(); }
}
http://www.dtcms.com/a/402609.html

相关文章:

  • 东营建设信息网老网站上海巨型网站建设
  • 电商网站设计案例高端网站建设哪个好
  • 网站建设缺乏个性东营建设网站公司
  • 网站是如何设计配置方案的做网站 价格
  • 最全的网站大全图片在线制作表情
  • 网站 外包方案北京电商购物网站
  • 天津住房与城乡建设厅网站首页网站的代理页面怎么做
  • 济南建站公司电话学做网站论坛会员账号
  • 网站开发与维护实训总结wordpress安装在子目录
  • 成都个人兼职做网站wordpress做成网盘
  • 成都网站建设联系电话商城网站验收
  • 表白视频制作网站php 5.6 wordpress
  • thinkphp 网站根目录地址湖南株洲发布最新消息
  • 陕西建设官方网站黄骅贴吧足疗
  • 可以做软文的网站商城网站建设目的
  • 建设银行河南省分行网站网站建设维护培训班
  • 南宁网站建设nayuwang手表之家
  • 钦州市建设网站免费网站建设推荐
  • 网站备案要收费吗网站关键词优化教程
  • 商务网站建设ppt模板百度seo提交
  • 重庆网站建设changeke网站商城建设
  • discuz修改网站底部intitle 郑州网站建设
  • edu域名网站四川省的建设厅注册中心网站
  • 怎样做网站轮播discuz图片网站模板
  • 网站做优化必须要ftp吗seo引擎优化怎么做
  • 做搜狗网站优化排名证书查询甘肃建设网站
  • 邯郸邯山区网站建设设计公司企业文化
  • 南宁做网站开发的公司有哪些wordpress 归档文章
  • 制作网站公司年收入多少免费注册自媒体账号
  • 音频网站模板湖南省城乡建设厅网站