[UOJ48] 核聚变反应强度】的更多相关文章

QUQ 思路 求出a1的所有约数,与a1.ai放入同一数组: 求出gcd(a1,ai): 枚举约数,得出ans; 代码实现 #include<cmath> #include<cstdio> #define LL long long ; int n; LL v[maxn],s[maxn],ans,vs; inline LL gcd(LL x,LL y){return x%y?gcd(y,x%y):y;} int main(){ scanf("%d",&n)…
[UR #3]核聚变反应强度 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/48 Description 著名核物理专家 Picks 提出了核聚变特征值这一重要概念. 核聚变特征值分别为 x 和 y 的两个原子进行核聚变,能产生数值为 sgcd(x,y) 的核聚变反应强度. 其中, sgcd(x,y) 表示 x 和 y 的次大公约数,即能同时整除 x,y 的正整数中第二大的数.如果次大公约数不存在则说明无法核…
[UOJ#48][UR #3]核聚变反应强度(质因数分解) 题面 UOJ 题解 答案一定是\(gcd\)除掉\(gcd\)的最小质因子. 而\(gcd\)的最小值因子一定是\(a_1\)的质因子. 所以预处理出\(a_1\)的质因子,个数不会超过\(\log(a)\)个,然后就可以直接暴力了. 时间复杂度\(O(n\log(a)+\sqrt a)\) #include<iostream> #include<cstdio> #include<algorithm> usin…
题目描述 给出一个长度为 $n$ 的数列 $a$ ,求 $a_1$ 分别与 $a_1...a_n$ 的次大公约数.不存在则输出-1. 输入 第一行一个正整数 $n$ . 第二行 $n$ 个用空格隔开的正整数,第 $i$ 个为 $a_i$ . $n\le 10^5,a_i\le 10^{12}$ 输出 一行 $n$ 个用空格隔开的整数,第 $i$ 个表示 $\text{sgcd}(a_1,a_i)$ . 样例输入 412450 1 2 450 样例输出 6225 -1 1 75 题解 数论 次大公…
题目大意:给你一串数$a_i$,求$sgcd(a_1,a_i)$,$sgcd(x,y)$表示$x,y$的次大公约数,若没有,则为$-1$ 题解:即求最大公约数的最大约数,把$a_1$分解质因数,求出最大公约数,在判断是否可以被整除就行了 卡点:无 C++ Code: #include <cstdio> #include <vector> #define maxn 100010 std::vector<long long> v; int n, sz; long long…
次大公约数就是gcd再除以其最小质因子(如果有的话).可以发现要求的sgcd 的前身gcd都是a1的约数,所以把a1质因数分解直接做就行了. #include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=100005; unordered_map<ll,ll> mmp; ll gcd(ll x,ll y){ return y?gcd(y,x%y):x;} int n,c[233],n…
枚举/二分 C题太神窝看不懂…… 核聚变反应强度 QwQ很容易发现次小的公约数一定是gcd的一个约数,然后……我就傻逼地去每次算出a[1],a[i]的gcd,然后枚举约数……这复杂度……哦呵呵... 正解是先找到a[1]的所有质因数啊……然后在刚刚那个算法的“枚举gcd的约数”的时候直接枚举这些质因数就好了…… //UOJ Round3 A #include<vector> #include<cstdio> #include<cstring> #include<c…
\(\mathcal{Morning}\) \(Task1\)高精度\(\times\)高精度 哦呵呵--真是喜闻乐见啊,我发现这一部分比较有意思于是就打算整理下来233.窝萌现在有一个整数\(A = \sum \limits _{i=0}^{\lfloor log_{10}A \rfloor}{a_i \times 10^i}\) 和另一个整数\(B = \sum \limits _{i=0}^{\lfloor log_{10}B \rfloor}{b_i \times 10^i}\) 那么对…
今天遇到个需求,使用JS检测密码强度:密码长度最短为8,必须同时包含字母.数字.特殊符号. 代码如下: /*         * 检测密码复杂度         */         function checkPassStrong(str){             if(str.length<8){                 return false;             }             var containDigit = RegExp(/[\d]+/).test(s…
平时我们会在某些网站的注册页面或者更改密码的页面发现当我们输入密码时,会有一个类似于进度条的长条进行提示用户输入的密码强度.如下图: 我看到有些人用几张不同的图片来替换,这样似乎可以,但是不太好.所以我通过其他方式实现. 实质上这是根据用户输入的不同密码强度来改变 颜色区域的长度. 密码强度这个横条实质是一个div,其他标记也可以,div里面有一个span标记,我就是通过改变span的长度和颜色来表现密码的强度的.原理很简单,但是在操作过程中,可能会遇到一些问题很头疼. 1.先在html页面里面…