2020威海CCPC D,思维训练
admin
2024-03-08 03:43:04
0

ABC Conjecture

题意:给定一个数c,请你判断是否存在这样的两个数a和b,满足a+b=c,并且abc的质因子的乘积小于c(重复的质因子视为一个)。

思路:我首先发现对于这个题来讲,第一个条件基本没用,重点在于第二个条件,只要满足第二个条件就可以了,那么怎么满足呢?

发现当c的质因子出现重复的时候,c的所有种类质因子的乘积一定是小于c的,同时可以根据这些质因子来创两个数,使得这两个数的和等于c,所以问题转变为判断c是有某个质因子出现重复。那么重复是什么?也就是平方,立方,四次方等等,最简单的方式就是平方,只要判断一个数能否被某个平方数整除即可。

但是问题来了,1e18这么大,处理平方数是1e9个显然不是可以接受的(通常视一秒1e7为复杂度的极限)
但是我们可以处理1e12范围内的平方数,如果给定的c可以整除那么直接就是yes的判定,否则的话考虑一下是什么情况

如果这个数是个平方数,但是过大,必然是某个因子乘上了这个平方数,使得无法判断,那么我们只需要剔除c的1e6范围内的所有质因子即可。剔除后再判断是否为平方数。

值得注意的是c为1需要特判,否则会WA27

#include 
using namespace std;
#define int long long
#define endl '\n'
const int N = 1e7+100;
const int te=1e9;
int super_sqrt(int x)
{int l=1,r=sqrt(x+100),ans=0;while(l<=r){int mid=(l+r)>>1;if(mid*mid<=x) ans=mid,l=mid+1;else r=mid-1;}return ans;
}
bool isPrime[N];
int Prime[N],cnt=0;
void GetPrime(int n)
{isPrime[1]=0;for(int i=2;i<=n;i++){if(isPrime[i]){Prime[++cnt]=i;}for(int j=1;j<=cnt&&i*Prime[j]<=n;j++){isPrime[i*Prime[j]]=0;if(i%Prime[j]==0){break;}}}
}
signed main()
{//cout<<998244353ll*998244353ll< p;for(int i=2;i*i<=100000000000000;i++)p.push_back(i*i);int t;for(cin>>t;t;t--){int n;cin>>n;if(n==1){cout<<"no\n";continue;}bool falg=false;for(auto x:p)if(n%x==0)falg=true;for(int i=1;i<=cnt;i++){int con=0;while(n%Prime[cnt]==0){n/=Prime[cnt];con++;}if(con>=2){falg=true;}}if(super_sqrt(n)*super_sqrt(n)==n){falg=true;}if(falg)cout<<"yes";elsecout<<"no";if(t!=1)cout<

C. Inversion Graph

这个思维题还是很6的。

给定了一个排列,对于所有逆序对都连边,问你总共几个连通块。

思路:我们如果想用dsu去做的话,可能就需要对所有的连边都处理,但是最多可能会达到n*(n+1)/2条,所以复杂度不好实现。

从排列角度考虑,如果是正序情况,那么对于i来讲,i位置的前缀和就是i(i+1)/2,但是正序情况下就是n个连通块,也就是没有边相连,对于题目反向思考,如果截至到某个位置的前缀和是i(i+1)/2那么是不是就可以理解为多了一个连通块呢?显然是可以的。

#include 
using namespace std;
int T,n,a[100005],ans=0;
long long sum=0;
int main()
{cin>>T;for(int i=1;i<=T;i++){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];sum+=a[i];//sum前缀和 if(sum==1LL*(1+i)*i/2)ans++;}cout<

M - Function and Function
青岛的一个签到,大概是考了一个类似数字空洞的东西,其实可以发现递归到10层后基本就变为奇偶规律了。

#include using namespace std;int a[10]={1,0,0,0,1,0,1,0,2,1};
int x,k;
pair f(int x,int k)
{if(k==0||x==0){return make_pair(k,x);}int res=0;while(x){res+=a[x%10];x/=10;}f(res,k-1);
}
int main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t;for(cin>>t;t;t--){cin>>x>>k;auto n=f(x,k);if(n.first==0){cout<if(n.first%2){cout<<(n.second^1)<cout<

J - Books
脑筋急转弯?

这个题需要注意的是,其实他价格为0的书我们只算其为应得数量,但是这种书和实际获得与钱数都没有什么关系,这样考虑。

#include
#include
#define ll long long
#define INF 1000000007
using namespace std;
int main()
{int T,n,m,x;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);vectorv;for(int i=1; i<=n; ++i){scanf("%d",&x);if(x!=0)v.push_back(x);}int len=v.size();int zero=n-len;if(mm-=zero;ll sum=0;int t=INF;for(int i=0; iif(i+1<=m)sum+=v[i];else t=min(t,v[i]);}sum+=t-1;printf("%lld\n",sum);}}return 0;
}

相关内容

热门资讯

笑傲江湖没演完怎么就演贤妻了呢... 笑傲江湖没演完怎么就演贤妻了呢!明天在播 大结局 后篇明天会有,等待吧7:30播
想咨询心理专家杨凤池,怎样联系... 想咨询心理专家杨凤池,怎样联系他?可以直接去北京找他。尽管可能会排在三年之后,但是还是有机会,不是么...
天热这6道菜端上桌,比肉受欢迎... 天热这6道菜端上桌,比肉受欢迎,营养开胃,老少皆宜。天气炎热,没有胃口吃饭的吃饭的朋友看过来,下面分...
求几部类似于潘多拉之心,交响诗... 求几部类似于潘多拉之心,交响诗篇,灼眼夏娜,零之使魔龙之界点武器种族传说,男女主角15岁的楼下的龙之...
阿杜的人狼是哪个专辑的? 什么... 阿杜的人狼是哪个专辑的? 什么时候发行的?如题阿杜在2010年2月26日出了最新专辑《没什么好怕》人...
星辰变通灵草哪里最多有没有地图... 星辰变通灵草哪里最多有没有地图坐标?星辰变通灵草哪里最多有没有地图坐标?竹林谷 有18处
我对一个女孩有好感他给我唱不完... 我对一个女孩有好感他给我唱不完美小孩是什么意思呀求解答我对一个女孩有好感他给我唱不完美小孩是什么意思...
天下3什么时候开新区? 天下3什么时候开新区?今天就开了啊这个谁能知道呢。。。只能看官网的通告了。不过一般比较大的节日应该都...
虾仁睡觉都需要放什么 虾仁睡觉都需要放什么哈,是虾仁水饺吧?可放少许韭菜及鸡蛋,除正常调料外,再加点胡椒粉。
在幼儿园不说话 在幼儿园不说话病情描述(主要症状、发病时间):我家是两个孩子,平时在家说话,干什么都挺好,可是在幼儿...
世界上有那么痴情的男人吗? 世界上有那么痴情的男人吗?我们都是有家庭的人,他一直都喜欢着我,现在说如果我答应跟他,他会每月瞒着他...
孕妇怎么穿着时尚 孕妇怎么穿着时尚 孕期是女人生命中一段特殊的日子,注重自己形象的孕妈咪不仅会在这段时期体现一贯的高贵...
中译日。。。高手请进。。。。 中译日。。。高手请进。。。。展覧品(てんらんひ搜芦ん)非売品(ひばいひん友困)商売が繁盛する(しょう...
我想听一些 伤感的 外文歌~~... 我想听一些 伤感的 外文歌~~~ 还有,要是女的唱的哦 ~~呵呵!多介绍点哦~~my heart w...
女朋友发『我不是主角,我只是舞... 女朋友发『我不是主角,我只是舞台角落边的一个小丑』这个说说,要怎么回复。急急急!!!(你是我的主角就...
有没有一个男人为了自己心爱的女... 有没有一个男人为了自己心爱的女人而放弃一切的,甚至生命的有没有?有,比如我本人,曾经为了自己喜欢的人...
赛尔号2水系最厉害的是什么精灵 赛尔号2水系最厉害的是什么精灵目前水系精灵很少,硬要说的话,水墨点点、阿卡纳斯、迪兰特都比较可以,其...
圣安地列斯飞机秘籍 圣安地列斯飞机秘籍jumpjet
白内障早期有哪些症状,流泪看东... 白内障早期有哪些症状,流泪看东西模糊眼白内障早期症状是看东西眼睛像蒙了一层塑料布似的早期白内障是我不...
北京时间不到点告诉我们什么道理 北京时间不到点告诉我们什么道理人生哲理吗? 看不出来,