博客园同步

首先是 广告 (启智树官网)

诶,炸了就得自己承担,吸取经验下次不要再犯才是最重要的(自我安慰。。。)

Day−?Day\ -?Day −?

得知了有这场比赛,名肯定是要报的,但是真的有点不情愿——这场比赛主要是小学生的,所以,对于我来说不拿第 111 ,第 222 显然是说不过去。。。

但愿不会出意外吧……

Day−1Day\ -1Day −1

知道了规则,感觉挺意外的——还要开摄像头和麦克风。当然,这是好事,不让某某某这样的同学误入作弊的歧途

Day0Day\ 0Day 0

作业多多多,睡前都在做作业,怕不好明天考试还会去做作业(直播写作业我怕不是要翻车,原形毕露了~

Day1Day\ 1Day 1

可惜出题人没给我留下机会/kk

T1T_1T1​

题目描述

2020年春节,新型冠状病毒(后文简称新冠病毒)肆虐,居民必须佩戴口罩方能出门,一时之间口罩成为紧缺物资,各地政府为了避免出现哄抢现象,纷纷出台各种措施,限制购买口罩的数量。淘淘所在社区就规定必须持身份证到指定药房排队购买一次性口罩,并且每户每天只能派出一人购买,每次限购k(k>1)只。每次出门采购一次性口罩,将消耗家里原有一次性口罩1只。由于药房每天能够供应的一次性口罩是有限的,并不能保证排队的人都能买到,也就是说买到了就赚到k-1只,买不到就亏1只。已知淘淘家里原有一次性口罩n只,出门若干次之后,家里的一次性口罩变成了t只,请问淘淘至少出门了几次?

做法&想法

做得挺顺利,应该不大会翻车。

我们显然有个贪心,显然有一种策略——我们绝对不会先去赚 k−1k-1k−1 只,在去亏 k−1k-1k−1 只,因为题目求的是最少出门次数。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
int main(){int n,t,k,ans=0;read(n);read(k);read(t);k--;if(n>=t)return printf("%d\n",n-t),0;int x=t-n;if(x%k==0)ans+=x/k;else ans+=x/k+1;n+=ans*k;ans+=n-t;printf("%d\n",ans);return 0;
}

T2T_2T2​

题目描述

新冠病毒把每个人的生活节奏都打乱了,搞得大家都不能出门,更别提上幼儿园了,可把淘淘的小妹妹蓝蓝憋坏了,小家伙在家老是缠着妈妈讲故事,每当此时妈妈会讲一些“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山……”这样循环的故事,一直讲到蓝蓝睡着或不想听为止。元宵节过后妈妈要上班了,为了满足蓝蓝听妈妈讲故事的需求,妈妈要淘淘把她讲的故事录音后用复读机循环播放给蓝蓝听,淘淘觉得整个故事有点长,全录下来没有必要,如果一个故事本身是周期性的,那么只要找出它的最小周期,将开头一段长度等于最小周期的内容录下来用复读机循环播放就行了。如故事内容为“abcabcabcabc”,它的最小周期长度为3,内容为“abc”,只需将“abc”录下来循环播放就行了。淘淘很忙,他把这个任务交给了你,要求写一个程序,找出一个字符串的最小周期的长度。

做法&想法

我们可以枚举答案,然后 O(n)O(n)O(n) 判断(最坏情况)

显然是个枚举的方法,感觉跑不满,应该还行吧。

中间题目改了!差评!!!

由于之前的输入格式没有字符个数 nnn,所以我是直接

scanf("%s",ch);
n=strlen(ch);

结果,读入 nnn 后,我的代码就变成了

read(n);
for(int i=1;i<=n;i++)cin>>ch[i];

可以注意到,最开始是从 000 开始编号的写法,后一种是从 111 开始编号的写法,结果我以为没问题,改了之后样例都不测就交了(这个行为可以说是愚蠢至极!哎~)

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
char ch[100010];
int n;
bool check(int x){for(register int i=x;i<n;i++)if(ch[i]!=ch[i%x])return false;return true;
}
int main(){read(n);scanf("%s",ch);for(register int i=1;i<n;i++)if(check(i)){printf("%d\n",i);return 0;}cout<<n;return 0;
}

T3T_3T3​

题目描述

处理完复读机的事,淘淘正想放松一下,口袋里的手机响了,接通后传来了青少年科技中心可人老师的亲切声音,可人老师要求淘淘出一道既能测出选手智力同时又不超出小学数学知识范围的题,这让淘淘犯难了,出什么好呢?淘淘在脑海中将历年的NOIP复赛题想了一遍,突然灵机一动,想到了Hankson的趣味题,淘淘觉得可以将它简化改编一下,变成一道考验小学生的智力问题,改编后的问题如下:给你两个正整数X和Z,其中Z一定是X的倍数,要你求出满足下列两个条件的正整数Y

  • 条件1:Z是X和Y的最小公倍数
  • 条件2:在满足条件1的前提下要求Y最小

淘淘考虑到小朋友们能来参加本次比赛都不容易,每个人都是各区的精锐之师,因此他在设计测试数据时手下留情了,使得每个小朋友都有大把的分数可拿,当然了,越是聪明的小朋友能拿的分越多!

做法&想法

PS:这题折腾了半个多小时,有难度的。

首先,我们将 XXX、YYY 和 ZZZ 用数论的形式表示一下。

X=∏pi∈primepiaiX=\prod\limits_{p_i\in prime}p_i^{a_i}X=pi​∈prime∏​piai​​

Y=∏pi∈primepibiY=\prod\limits_{p_i\in prime}p_i^{b_i}Y=pi​∈prime∏​pibi​​

Z=∏pi∈primepimax⁡(ai,bi)Z=\prod\limits_{p_i\in prime}p_i^{\max(a_i,b_i)}Z=pi​∈prime∏​pimax(ai​,bi​)​

那么, Z÷XZ\div XZ÷X 就等于

∏pi∈primepif(ai,bi)×(bi−ai)\prod\limits_{p_i\in prime}p_i^{f(a_i,b_i)\times (b_i-a_i)}pi​∈prime∏​pif(ai​,bi​)×(bi​−ai​)​

其中,fff 函数的定义如下:

当 f(x,y)f(x,y)f(x,y) 中,x>yx>yx>y 时,f(x,y)f(x,y)f(x,y) 为 000;反之 x≤yx \leq yx≤y 时,f(x,y)f(x,y)f(x,y) 为 111。

因为我们要 YYY 尽量小,所以,当 ai≥bia_i\geq b_iai​≥bi​ 时,我们需要让 bi=0b_i=0bi​=0

所以,YYY 就等于

∏pi∈primepik(bi,max⁡(ai,bi))×(bi−ai)\prod\limits_{p_i\in prime}p_i^{k(b_i,\max(a_i,b_i))\times (b_i-a_i)}pi​∈prime∏​pik(bi​,max(ai​,bi​))×(bi​−ai​)​

其中,kkk 函数的定义如下:

当 k(x,y)k(x,y)k(x,y) 中,x=yx=yx=y 时,k(x,y)k(x,y)k(x,y) 为 111;反之 x≠yx \neq yx​=y 时,k(x,y)k(x,y)k(x,y) 为 000。

我们考虑实际意义,上述式子 Z÷XZ\div XZ÷X 就是 YYY 比 XXX 多的因子。

举个例子:X=24,Z=360X=24,Z=360X=24,Z=360

Z÷X=360÷24=15=31×51Z\div X=360\div 24=15=3^1\times 5^1Z÷X=360÷24=15=31×51

X=24=23×31=23×31×50X=24=2^3\times 3^1=2^3\times 3^1\times 5^0X=24=23×31=23×31×50

所以 Y=31+1×50+1=32×51=45Y=3^{1+1}\times 5^{0+1}=3^2\times 5^1=45Y=31+1×50+1=32×51=45

当然,bi−aib_i-a_ibi​−ai​ 并不一定 >>> aia_iai​,所以,我们要用 whilewhilewhile 来搞。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
ll gcd(ll x,ll y){if(x%y==0)return y;return gcd(y,x%y);
}
int main(){ll x,y,z;read(x);read(z);y=z/x;while(gcd(x,y)!=1){int a=gcd(x,y);y*=a;x/=a;}cout<<y;return 0;
}

T4T_4T4​

题目描述

2022世界杯马上就要开始了,经过一番激烈角逐,全球32支球队获得了出线资格。世界杯的比赛分为两个阶段,分别为小组赛阶段和淘汰赛阶段,在小组赛阶段32支球队将分成8个小组,每个小组4支球队进行循环比赛,即每两支球队比赛一次,每支球队会进行3场比赛,胜得3分,平得1分,输得0分。陶陶和蓝蓝都是足球迷,蓝蓝预测了几次2022世界杯小组赛各个队伍的得分,陶陶想知道这些得分情况是否可能出现?

做法&想法

我们可以穷举出所有可能的结果,打表。

代码

代码就不放了

T5T_5T5​

题目描述

淘淘和蓝蓝在星际旅行时来到了瓦尔登星,他们们遇到了这里的原住精灵,意外地发现他们喜欢吃桃子,于是决定将飞船里的桃子分给他们一些。
精灵一共有N只,编号为1到N,第i只精灵需要吃Ai个桃子。现在每只精灵会按1到N的顺序领取桃子,每只精灵可选择淘淘和蓝蓝中的一个人,并向他讨要桃子。但精灵们也会有情绪,假设前面和自己选了同一个人的精灵讨要到的桃子的最大个数是x,如果x大于自己的需求Ai,那么这个精灵会产生x-Ai的不开心值;如果x不大于自己的需求Ai,那么这个精灵不会产生不开心值。
淘淘和蓝蓝想让所有精灵的不开心值总和最小,他们想问你这个总和的最小值是多少?

做法&想法

我们可以枚举全排列

代码

我代码还是需要放一下,这个是枚举 0/10/10/1 的全排列,我们可以使用二进制的方法,就像状压 dpdpdp。

我认为这种写法比较稳,不会出现爆栈之类的情况。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
int n,a[100010],v1,v2,ans=INT_MAX;
int main(){read(n);for(int i=1;i<=n;i++)read(a[i]);for(int i=0;i<(1<<n);i++){v1=0;v2=0;int s=0;for(int j=1;j<=n;j++)if(i&(1<<(j-1))){v1=max(v1,a[j]);if(v1!=a[j])s+=v1-a[j];}else{v2=max(v2,a[j]);if(v2!=a[j])s+=v2-a[j];}ans=min(ans,s);}cout<<ans;return 0;
}

当然 dfsdfsdfs 也是可以的。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
int n,a[100010],v1,v2,ans=INT_MAX,f[100010];
void dfs(int x){if(x==n+1){v1=0;v2=0;int s=0;for(int i=1;i<=n;i++)if(f[i]==0){v1=max(v1,a[i]);if(v1!=a[i])s+=v1-a[i];}else{v2=max(v2,a[i]);if(v2!=a[i])s+=v2-a[i];}ans=min(s,ans);return;}f[x]=0;dfs(x+1);f[x]=1;dfs(x+1);
}
int main(){read(n);for(int i=1;i<=n;i++)read(a[i]);dfs(1);return 0;
}

有一说一,222 种写法的代码相似度还是很高的。

T6T_6T6​

题目描述

淘淘来到了一座城市, 这座城市有N个景点,共有N - 1条道路连接着彼此,每个景点到另外一个景点有且仅有一条通路,并且一些道路正在维修,是无法经过的。淘淘开始时可以在任意一个景点,他决定在接下来的K-1天中,每天从当前所在的景点不经过正在维修的道路前往另一个景点(他也可以选择逗留在原来的景点,也可以去别的景点,并且不限于相邻的景点,详见样例2解释) ,淘淘希望你求出有多少种不同的旅行方案。
方案数可能很大,因此他要求你求出答案对20200621取模的结果,也就是说,如果你求出了答案Ans,请输出Ans % 20200621。

做法&想法

首先是 808080 分的做法,我们考虑 dpdpdp。

fi,jf_{i,j}fi,j​ 表示第 jjj 天到底第 iii 个点的方案数,我们还可以使用滚的数组,来滚动掉。

我们发现,这个题目需要我们维护连通块,自然考虑并查集。

我们可以发现,由于每天可以走许多路,所以,fi,j=size(i)j−1f_{i,j}=size(i)^{j-1}fi,j​=size(i)j−1

其中,sizesizesize 函数的定义如下:

size(x)size(x)size(x) 表示 xxx 所在的连通块节点个数。

代码

80pts80pts80pts

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
const int MOD=20200621;
vector<int>v[100010];
ll n,k,f[100010][2],fa[100010],ans;
int find(int x){if(fa[x]==x)return x;return fa[x]=find(fa[x]);
}
int main(){read(n);read(k);for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<n;i++){int x,y,z;read(x);read(y);read(z);if(z)fa[find(x)]=find(y);}for(int i=1;i<=n;i++)v[find(i)].push_back(i);for(int i=1;i<=n;i++)f[i][1]=1;for(int j=2;j<=k;j++)for(int i=1;i<=n;i++){f[i][(j%2)]=0;for(auto k:v[find(i)])f[i][j%2]=(f[i][j%2]+f[k][(j-1)%2])%MOD;}for(int i=1;i<=n;i++)ans=(ans+f[i][k%2])%MOD;cout<<ans;return 0;
}

100pts100pts100pts

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
const int MOD=20200621;
vector<int>v[100010];
ll n,k,f[100010][2],fa[100010],ans,size[100010];
int find(int x){if(fa[x]==x)return x;return fa[x]=find(fa[x]);
}
int pw(int x,int y){int ans=1;for(;y;y>>=1){if(y&1)ans=1ll*ans*x%MOD;x=1ll*x*x%MOD;}return ans;
}
int main(){read(n);read(k);for(int i=1;i<=n;i++)fa[i]=i,size[i]=1;for(int i=1;i<n;i++){int x,y,z;read(x);read(y);read(z);if(z){size[find(x)]+=size[find(y)];size[find(y)]=0;fa[find(y)]=find(x);}}for(int i=1;i<=n;i++)ans=(ans+pw(size[find(i)],k-1))%MOD;cout<<ans;return 0;
}

T7T_7T7​

题目描述

淘淘和蓝蓝在玩一款神奇的游戏——主地斗!规则如下:
两位玩家使用一副扑克牌(一张大王,一张小王,其他牌各四张,共54张)中的一些牌参加游戏,每人开始有4张手牌,其余的牌被放在牌堆之中。所有的手牌和牌堆里牌的顺序和点数都被玩家知晓。规定扑克牌的点数大小为 大王=小王>2>A>K>Q>J>10>9>8>7>6>5>4>3。每局游戏有数轮。每轮先手会在桌面上放置至少一张,至多不超过后手手牌数量的牌(大王和小王除外),后手可以用点数更大的牌叠在桌面上的牌上(也可以选择不叠)。若所有桌面上的牌被叠到,则后手获得此轮胜利,桌面上的牌全部移出游戏,下一轮游戏先手变为后手,后手变为先手。否则先手获得此轮胜利,桌面上的牌全部进入后手的手牌(无视手牌上限),下一轮游戏先手与后手不变。
轮与轮之间,若上一轮的先手的手牌不足4张,将从牌堆顶部拿牌直到手牌为4张或者牌堆被摸空。
若一轮游戏开始前。一名玩家没有手牌而另一名玩家有手牌,那么没有手牌的玩家获得这局游戏的胜利。如果两名玩家都有手牌,但是先手玩家只有大王和小王导致他无法放牌,那么后手玩家获胜。
因为总是赢不了淘淘所以淘气的蓝蓝准备出老千。
他有以下两种出千方式:

  1. 海底捞月:无视手牌上限从牌堆底部摸一张牌。

  2. 偷天换日:将淘淘的任意一张手牌与自己的任意一张牌对调。

出千可以在这局游戏游戏开始前进行,并且为了不被发现,一局游戏只能出千一次。已知两名玩家都会按最优策略(即希望获得本局游戏胜利,下同)出牌,蓝蓝会按最优策略出千。(若不出千便能取得胜利,蓝蓝一定不会出千。若必须出千且两种方式均能取胜,则优先出海底捞月千)

现在蓝蓝想问你是否能取得胜利。若取得胜利,是否需要出千,出什么千。

做法&想法

如此长的题面当然要骗分啦

代码

骗分(60pts60pts60pts 的好成绩)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
int main(){int a,b;read(a);read(b);if(a==8&&b==0){puts("Win");puts("No");return 0;}if(a==9&&b==1){puts("Win");puts("Yes");puts("2");return 0;}puts("Win");puts("No");return 0;
}

100pts100pts100pts

略(逃

T8T_8T8​

题目描述

淘淘和蓝蓝喜欢“归整”的序列。长度为N的非负整数序列A是“归整”的,当且仅当A的任意连续K个元素的和都是S。

我们可以通过修改一些元素来使一个序列变成“归整”的。可以把A的任意元素修改成0到S之间(包含0和S)的任意整数。淘淘和蓝蓝想知道至少修改多少个元素才能使序列A变成“归整”的,于是找到你来帮助他们。

做法&想法

先考虑一个性质:

ai=aimodka_i=a_{i\bmod k}ai​=aimodk​

为什么?

首先,ai+ai+1⋯+ai+k−1=ai+1⋯+ai+k−1+ai+k−Sa_i+a_{i+1}\cdots +a_{i+k-1}=a_{i+1}\cdots +a_{i+k-1}+a_{i+k}-Sai​+ai+1​⋯+ai+k−1​=ai+1​⋯+ai+k−1​+ai+k​−S

所以,ai=ai+ka_i=a_{i+k}ai​=ai+k​

之后我们就可以开心的 dpdpdp 了,我们 fi,jf_{i,j}fi,j​ 表示前 iii 个数和为 jjj 的方案数。

我们可以枚举第 iii 个数,假设它是 kkk,那么 fi,j=fi−1.j−k+hi,kf_{i,j}=f_{i-1.j-k}+h_{i,k}fi,j​=fi−1.j−k​+hi,k​

其中,hhh 函数的定义如下:

hi,jh_{i,j}hi,j​ 表示下标和 iii 在模 kkk 意义下同余的数中不为 kkk 的数的个数。

这东西我们可以 O(n2)O(n^2)O(n2) 预处理出来。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
int a[310],ans,f[310][310],h[310][310];
int main(){memset(f,0x3f,sizeof(f));int n,k,s;read(n);read(k);read(s);ans=n;for(int i=1;i<=n;i++)read(a[i]);for(int i=0;i<=s;i++)for(int j=1;j<=n;j++)h[(j-1)%k+1][i]+=(a[j]!=i);f[0][0]=0;for(int i=1;i<=k;i++)for(int j=0;j<=s;j++)for(int k=0;k<=j;k++)f[i][j]=min(f[i][j],f[i-1][j-k]+h[i][k]);cout<<f[k][s];return 0;
}

Day2Day\ 2Day 2

哎,发现自己炸了,T2T_2T2​ 挂成 10pts10pts10pts,T4T_4T4​ 挂成 30pts30pts30pts,T8T_8T8​ 代码中的第 232323 行 h[i][k] 手滑打成 h[i][j] 关键是还能过样例!气死我也……

333 小时的时间是真的短,最后只拍了拍感觉最不稳的 222 题(结果都没发现错误)

哎,888 题挂了 333 题,我拍题怎么就没拍到这 333 题中的一题呢?

我也不知道。。。

放一放对拍的代码留作纪念吧。。。

桃子的对拍

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
int n,a[100010],v1,v2,ans=INT_MAX,f[100010],ans1=INT_MAX;
void dfs(int x){if(x==n+1){v1=0;v2=0;int s=0;for(int i=1;i<=n;i++){if(f[i]==0){v1=max(v1,a[i]);if(v1!=a[i])s+=v1-a[i];}else{v2=max(v2,a[i]);if(v2!=a[i])s+=v2-a[i];}}ans1=min(s,ans1);return;}f[x]=0;dfs(x+1);f[x]=1;dfs(x+1);
}
int main(){int s=0;while(1){n=8;for(int i=1;i<=n;i++)a[i]=rand()%100+1;dfs(1);for(int i=0;i<(1<<n);i++){v1=0;v2=0;int s=0;for(int j=1;j<=n;j++){if(i&(1<<(j-1))){v1=max(v1,a[j]);if(v1!=a[j])s+=v1-a[j];}else{v2=max(v2,a[j]);if(v2!=a[j])s+=v2-a[j];}}ans=min(ans,s);}if(ans1!=ans){for(int i=1;i<=n;i++)cout<<a[i];return 0;}printf("%d\n",++s);
}return 0;
}

复读机的对拍:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &FF){T RR=1;FF=0;char CH=getchar();for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);FF*=RR;
}
ll gcd(ll x,ll y){if(x%y==0)return y;return gcd(y,x%y);
}
ll ans1(ll x,ll z){ll y=z/x;while(gcd(x,y)!=1){int a=gcd(x,y);y*=a;x/=a;}return y;
}
ll ans2(ll x,ll z){for(int i=1;i<=z;i++){if(x*i/gcd(i,x)==z)return i;}
}
int main(){int s=0;while(1){ll x,y,z;x=rand()%100+1;z=(rand()%100+1)*x;// cout<<x<<" "<<z<<" "<<ans2(x,z)<<endl;if(ans1(x,z)!=ans2(x,z)){cout<<x<<" "<<z<<" "<<ans2(x,z)<<endl;return 0;}printf("%d\n",++s);}return 0;
}

Day?Day\ ?Day ?

惊喜地发现自己炸成这样还有 RK2RK2RK2!真是奇迹,看来我还是不错的QAQ

启智树游记题解——逆境中的奇迹相关推荐

  1. 【启智树NOIP模拟】生存【父子分治】

    题意:有 nnn 个城市连成一棵树,每个城市有 aia_iai​ 个人.接下来 mmm 天每天会发生 kik_iki​ 次灾难,每个灾难会让一个给定城市的人全部死掉.每个人一天可以走一条边,也可以不动 ...

  2. 【启智树NOIP模拟】奇偶【卢卡斯定理】【背包】【bitset】

    题意:给定 nnn 个数 aia_iai​ ,求选出(可以重复,考虑顺序)MMM 个数和为 SSS 的方案数模 222. n≤200,ai≤105,M,S≤1018n\leq 200,a_i\leq ...

  3. 启智社区亮相2020全球智博会,千万奖金悬赏优秀开发者

    在新一代信息技术快速发展和开源生态体系不断完善的当下,开源在技术创新.生态构建.数字变革等方面,都发挥着重要的引领作用.2020全球人工智能产品应用博览会上,新一代人工智能产业技术创新战略联盟(AIT ...

  4. OpenI/O 2020 启智开发者大会!启智筑梦远航,千万激励奖金助力开发者“智”造更多新可能

    为促进新一代人工智能开源开放平台的建设,鼓励开发者积极参与启智社区工作,形成尊重贡献.尊重人才的良好氛围,构建健康持续可发展的开源生态体系,启智社区汇集多方专业力量,发起了启智社区优秀开发者激励活动. ...

  5. 向北京集结!OpenI/O 2020启智开发者大会进入倒计时!

    防疫成为新常态,不但加速了AI与各行各业的深度融合,也让冲在技术开发与应用落地一线的AI开发者们登上了历史舞台的C位.作为AI开源爱好者交流学习的盛会,一年一度的启智开发者大会将于12月2-3日在北京 ...

  6. OpenI/O 2020 启智开发者大会 |华为昇腾:与开发者共创AI新时代

    人工智能时代,掌握基础核心技术,才能掌握未来发展主动权. 如何打造"最好的人工智能软硬件平台"? 怎样理解"基础"? 支撑"基础"需要什么, ...

  7. OpenI启智社区参展2021全球智博会

    9月18日,为期三天的2021全球人工智能产品应用博览会在苏州国际博览中心圆满落下帷幕.本次展会以"数智融通 协创未来"为主题,集"展.会.赛.讲.演"为一体. ...

  8. 向北京集结!OpenI/O 2020启智开发者大会进入倒计时

    点击上方"开源社"关注我们 | 编辑:沈于蓝 | 设计:朱亿钦 | 责编:王皓月 防疫成为新常态,不但加速了AI与各行各业的深度融合,也让冲在技术开发与应用落地一线的AI开发者们登 ...

  9. 拥抱未来,开源先行!OpenI启智社区首批优秀开发者榜单即将出炉

    随着人工智能前沿技术在多行业领域的广泛应用,中国正迎来一场关于AI技术的创新变革,其不仅加快了各行业数字化升级的进程,更明确了AI开发者的角色定位,而且在这场AI变革发展的浪潮中,开源正于技术创新.生 ...

  10. 鸿蒙启智 博学多才,如何启智——【3岁阶段孩子的教养之63】

    前言:人生之始,犹如大厦之奠基,基牢则厦固.童年时代健康的体魄和健全的心理必将给他此后一生以正面的影响. 本文以时间为序,分别介绍0-9岁各年龄段孩子的身心发展特点,并以此为据,说明如何给孩子一个健康 ...

最新文章

  1. idea运行两个tomcat_IDE里的Tomcat是如何工作的
  2. python爬虫源码怎么使用_Python爬虫具体应该怎么使用?
  3. js实现购物车数量的增加与减少,js实现购物车数量的自增与自减
  4. centos7.0 没有netstat 和 ifconfig命令问题
  5. VTK:颜色顶点查找表用法实战
  6. 包含用法 includeFilters
  7. 几张旧照片,用傻瓜拍的,翻出来凑数
  8. 【Android】完善Android学习(二:API 2.3.4)
  9. ubuntu12.04编译rtems doc目录
  10. Java运行时数据区及对象的分配
  11. 深度防范,如何应对区块链安全问题?
  12. 导航守卫与keep-alive
  13. 【Sql Server 数据导出】导出篇-Sql Server 2008导出数据至wps
  14. 数字图像处理 DCT变换
  15. 欢乐颂 c语言编程代码,欢乐颂
  16. vscode 程序员鼓励师_把软萌程序猿鼓励师装进VScode里?最强交互彩虹屁,GitHub2.5k星,爱上写代码...
  17. 360与腾讯之争——顾客有可能成为上帝
  18. 我如何在GitHub Project上获得1,000个星星,以及在此过程中学到的教训
  19. 失落城堡手游获取服务器信息99,失落城堡手游更新情况介绍 游戏更新大全
  20. darwin之一万个定时器实现(IdleTask)

热门文章

  1. 什么叫DMZ区?DMZ区它有什么作用?
  2. warning:discards qualifiers from pointer target type解决办法
  3. axio.js封装和环境配置
  4. 软件测试之功能测试是什么?
  5. mysql execute stmt_mysql_stmt_execute()--MySql数据库
  6. 听刘万祥老师讲“模拟范围滑尺的动态图表”
  7. 【VueElementUI学习】表格序号
  8. Python 玩转数据 3 - NumPy ndarray Array Indexing, Slicing, Striding, View Subarray,Copy Subarray
  9. jq遍历子元素_jQuery 遍历子元素 遍历所有子元素
  10. MOS管(场效应管)导通条件