第6届传智杯复赛第一场(补题)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)
A题简单
C题:小红的数字分裂
思路:求最大公约数
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 1010;
int a[N];
int gcd(int x, int y)
{ // 辗转相除法
int t;
if (y == 0)
{
return x;
}
return gcd(y, x % y);
}
signed main()//注意s需要开long long
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, g=0;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
g = gcd(a[i], g);
// cout << g << endl;
}
int s=0;
for (int i = 0; i < n; i++)
{
s += a[i] / g - 1;
}
cout << s;
}
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 10;
int a[N];
int mod = 1e9 + 7;
signed main()
{
string s;
cin >> s;
int n = s.size();
int res = 1;
for (int i = 0; i < s.size(); i++)
{
a[i] = s[i] - 'a';
res = res * 25 % mod;//排列组合,在每个26位字母不选择自己一样的字母,与字符长度相乘
}
sort(a, a + n);
cout << res - (26 - (a[n - 1] - a[0] + 1));//用剩余的减去同构的,即同构的范围是最大的字母减掉最小的字母加一
}