我们可以考虑贪心,想一想,如果\(s\)串和\(t\)串中有一个字母相同的话,是不是就相当于必然存在\(S,t\)相同(将两个字符串删减成一个字母就可以了)
C:
#include<stdio.h>
#include<string.h>
char s[1000001], t[1000001];
int v[52];
int main(){
scanf("%s%s", s, t);
int n = strlen(s), m = strlen(t);
for(int i = 0; i < n; i++){
if('a' <= s[i] && s[i] <= 'z')v[s[i] - 'a'] = 1;
else v[s[i] - 'A' + 26] = 1;
}
for(int i = 0; i < m; i++){
if('a' <= t[i] && t[i] <= 'z'){
if(v[t[i] - 'a']){
printf("YES");
return 0;
}
}
else{
if(v[t[i] - 'A' + 26]){
printf("YES");
return 0;
}
}
}
printf("NO");
}
C++:
#include<bits/stdc++.h>
int main(){
std::string s, t;
std::cin >> s >> t;
std::array<bool, 52> v{};
for(int i = 0; i < s.size(); i++){
if('a' <= s[i] && s[i] <= 'z')v[s[i] - 'a'] = 1;
else v[s[i] - 'A' + 26] = 1;
}
for(int i = 0; i < t.size(); i++){
if('a' <= t[i] && t[i] <= 'z'){
if(v[t[i] - 'a']){
std::cout << "YES";
return 0;
}
}
else{
if(v[t[i] - 'A' + 26]){
std::cout << "YES";
return 0;
}
}
}
std::cout << "NO";
}
code:
C:
#include <stdio.h>
#include <stdlib.h>
int is_palindrome(int n)
{
int a = n, b= 0;
while (n > 0)
{
b = b * 10 + n % 10;
n /= 10;
}
if (a == b) return 1;
else return 0;
}
int is_prime(int n)
{
if(n<2) return 0;
for(int i=2;i<=n/i;i++)
{
if(n%i==0) return 0;
}
return 1;
}
int main()
{
int l,r;
scanf("%d%d",&l,&r);
int ans=0;
for(int i=l;i<=r;i++)
{
if(is_prime(i)&&is_palindrome(i))
{
ans++;
}
}
printf("%d\n",ans);
}
C++
#include <bits/stdc++.h>
using namespace std;
bool is_prime(int n)
{
if(n<2) return false;
for(int i=2;i<=n/i;i++)
{
if(n%i==0) return false;
}
return true;
}
bool is_palindrome(int n)
{
string a=to_string(n);
string b=a;
reverse(b.begin(),b.end());
if(a==b) return true;
else return false;
}
void solve()
{
int l,r;
cin>>l>>r;
int ans=0;
for(int i=l;i<=r;i++)
{
if(is_prime(i)&&is_palindrome(i))
{
ans++;
}
}
cout<<ans<<'\n';
}
int main()
{
solve();
}
读题可以知道,如果前面两个出现的数字出现并且连续,那么相当于前面双周赛,否则,就是单周赛
C:
#include <stdio.h>
int a[15];
int main() {
int n;
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
}
if (a[n] - a[n - 1] == 1) {
printf("1\n");
} else {
printf("2\n");
}
return 0;
}
C++:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int> arr(n+1,0);
for(int i=1;i<=n;i++) cin>>arr[i];
if(arr[n]==arr[n-1]+1) cout<<1<<'\n';
else cout<<2<<'\n';
}
考虑到情况很多,可以先给\(a,b,c\)排一个序,对于\(a,b,c\)三种数字,如果将\(a\times b\)赋值给\(c\),然后再将\(a\times b\)赋值给\(a\),然后\(a,c\)相减,那么最多\(3\)步就可以将出现\(0\)了,所以答案最多是\(3\),然后其他可以分类情况进行讨论就可以了~~
(注意有一个十分坑的数据:43073 99716 99972 不开\(long long 过不去\))
具体特殊样例可以看代码:
C:
#include <stdio.h>
#include <stdlib.h>
long long max(long long a,long long b,long long c)
{
if(a>=b&&a>=c) return a;
if(b>=a&&b>=c) return b;
if(c>=b&&c>=a) return c;
}
long long min(long long a,long long b,long long c)
{
if(a<=b&&a<=c) return a;
if(b<=a&&b<=c) return b;
if(c<=b&&c<=a) return c;
}
void solve()
{
long long a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
long long maxn=max(a,b,c);
long long minn=min(a,b,c);
long long mid=a+b+c-maxn-minn;
a=minn;
b=mid;
c=maxn;
if(a==0||b==0||c==0) printf("0\n");
else if(a==b||b==c||a==c) printf("1\n");//两个数字相同
else if(a+b==c||a+a==b||a+a==c||b+b==c) printf("2\n");//两数相加等于另一个数字
else if(a*b==c) printf("2\n");// 2 3 6 相乘等于另一数字
else if(b*c==c) printf("2\n");// 1 1 5
else if(a*b==b) printf("2\n"); //1 5 6
else printf("3\n");//其他情况
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
solve();
}
return (0^0);
}
C++:
#include <bits/stdc++.h>
using namespace std;
void solve()
{
vector<long long> arr(3,0);
sort(arr.begin(),arr.end());
long long a=arr[0];
long long b=arr[1];
long long c=arr[2];
if(a==0||b==0||c==0) cout<<"0"<<'\n';
else if(a==b||b==c||a==c) cout<<1<<'\n';//两个数字相同
else if(a+b==c||a+a==b||a+a==c||b+b==c) cout<<2<<'\n';//两数相加等于另一个数字
else if(a*b==c) cout<<2<<'\n';// 2 3 6 相乘等于另一数字
else if(b*c==c) cout<<2<<'\n';// 1 1 5
else if(a*b==b) cout<<2<<'\n'; //1 5 6
else cout<<3<<'\n';//其他情况
}
signed main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);//注意开解绑
int T=1;
cin>>T;
while(T--) solve();
return (0^0);
}
考虑到a的数字很大,所以不适合用普通的a%b来进行计算,如果你会java或者python,可以使用相关的大整数来进行计算,但是后台只开了1s时限,Java会超,Py数据会答案错误(zzuli的毛病, 所以说只能用C/C++(
考虑到 \((a+b)\mod c\)=\(a\mod c+b\mod c\)
可以根据秦九韶算法将\(a\)进行分解,比如 \(234=200+30+4\)分解,然后将
根据\((a+b)\mod c\)=\(a\mod c+b\mod c\)中,然后套入即可,
C:
#include <stdio.h>
#include <string.h>
#define N 1000010
const int mod=1e9+7;
char a[N];
int main()
{
int b;
scanf("%s%d",a,&b);
long long ans=0;
int n=strlen(a);
for(int i=0;i<n;i++)
{
ans=(ans*10%b+(a[i]-'0'))%b;
}
printf("%lld",ans);
}
C++:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a;
int b;
cin>>a>>b;
long long ans=0;
for(int i=0;i<a.size();i++)
{
ans=(ans*10%b+(a[i]-'0'))%b;
}
cout<<ans<<'\n';
}
考虑到\(n\leq 1000\) 所以说只要会冒泡排序就可以直接过了,注意一下怎么比较,然后排序就可以了~~
C:
#include <stdio.h>
#include <stdlib.h>
struct node
{
int name;
int score;
int time;
int errorNumber;
}b[1001];
int a[5];
int main() {
scanf("%d %d %d %d", &a[1], &a[2], &a[3], &a[4]);
int n;
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
{
b[i].name = i, b[i].time = -1, b[i].score = 0, b[i].errorNumber = 0;
for (int j = 1; j <= 4; ++j)
{
int x, y;
scanf("%d %d", &x, &y);
if (x == -1) {
continue;
}
b[i].score += a[j];
if (b[i].time < x) {
b[i].time = x;
}
b[i].errorNumber += y;
}
}
for (int i = 1; i <= n - 1; ++i)
{
for (int j = 1; j <= n - i; ++j)
{
if (b[j].score < b[j + 1].score)
{
struct node temp = b[j];
b[j] = b[j + 1];
b[j + 1] = temp;
} else if(b[j].score == b[j + 1].score)
{
int x = b[j].time + 20 * b[j].errorNumber;
int y = b[j + 1].time + 20 * b[j + 1].errorNumber;
if(y < x)
{
struct node temp = b[j];
b[j] = b[j + 1];
b[j + 1] = temp;
} else if(y == x)
{
if(b[j + 1].name < b[j].name)
{
struct node temp = b[j];
b[j] = b[j + 1];
b[j + 1] = temp;
}
}
}
}
}
for (int i = 1; i <= n; ++i) {
printf("%d ", b[i].name);
}
return 0;
}
C++:
#include <bits/stdc++.h>
using namespace std;
struct Node
{
int id;
int score;
int last=0;
int pently;
int sum;
bool operator <(const Node &other) const
{
if(score!=other.score) return score>other.score;
if(sum!=other.sum) return sum<other.sum;
return id<other.id;
}
};
void solve()
{
vector<int> score(5,0);
for(int i=1;i<=4;i++) cin>>score[i];
int n;
cin>>n;
vector<Node> arr(n+1);
for(int i=1;i<=n;i++)
{
arr[i].id=i;
for(int j=1;j<=4;j++)
{
int times,pently;
cin>>times>>pently;
if(times==-1) continue;
arr[i].score+=score[j];
arr[i].pently+=20*(pently);
arr[i].last=max(arr[i].last,times);
}
}
for(int i=1;i<=n;i++)
{
arr[i].sum=arr[i].last+arr[i].pently;
}
sort(arr.begin()+1,arr.end());
for(int i=1;i<=n;i++) cout<<arr[i].id<<' ';
cout<<'\n';
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int T=1;
// cin>>T;
while(T--) solve();
return (0^0);
}
假设我们要找的数是 \(num\),我们发现只要一个数是合数,它就一定能写成 \(k*x\) ( \(x\) 是质数)的形式,若 \(gcd(num,x) \neq 1\),则定有 \(gcd(num,kx) \neq 1\),所以我们只需要考虑小于等于 \(n\) 的质数就可以了,让 \(num\) 与这些质数的最大公约数不等于 \(1\) 就行了,这个最小的 \(num\) 就是让这些质数相乘。
#include <stdio.h>
const int mod = 1e9 + 7;
int is_prime(int num){
if(num == 1)return 0;
for(int i = 2; i <= num / i; i++)
if(num % i == 0)return 0;
return 1;
}
int main()
{
int n;
scanf("%d", &n);
int ans = 1;
for(int i = 2; i <= n; i++)
{
if(is_prime(i))ans = (long long)ans * i % mod;
}
printf("%d", ans);
}
C++:
#include <bits/stdc++.h>
constexpr int mod = 1e9 + 7;
bool is_prime(int num)
{
if(num == 1)return 0;
for(int i = 2; i <= num / i; i++)
{
if(num % i == 0)return 0;
}
return 1;
}
int main()
{
int n;
std::cin >> n;
int ans = 1;
for(int i = 2; i <= n; i++)
{
if(is_prime(i))ans = (long long)ans * i % mod;
}
std::cout << ans;
}
C++另一种写法 :
#include <bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int get(int n)
{
for(int i=2;i<=n/i;i++)
{
if(n%i==0)
{
return i;
}
}
return n;
}
void solve()
{
int n;
cin>>n;
long long ans=1;
map<int,int> mp;
for(int i=2;i<=n;i++)
{
long long temp=get(i);
if(!mp.count(temp))
{
mp[temp]++;
ans=ans*temp%mod;
}
}
cout<<ans%mod<<'\n';
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T=1;
// cin>>T;
while(T--) solve();
return (0^0);
}
这里只要比较\(A_i\times A_j\leq A_i+A_j\)即可,发现只要分类讨论就可以了
这里为了更好的表达,原题转化成\(a\times b\leq a+b\)即可
C:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const int mod=1e9+7;
#define N 1000010
int arr[N];
void solve()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&arr[i]);
int pos=0;
int neg=0;
for(int i=1;i<=n;i++)
{
if(arr[i]>0) pos++;
else if(arr[i]<0) neg++;
}
long long ans=1ll*pos*neg%mod;
int number1=0;
int other=0;
int number2=0;
int number0=0;
for(int i=1;i<=n;i++)
{
if(arr[i]==1) number1++;
if(arr[i]==2) number2++;
if(arr[i]!=1&&arr[i]>1) other++;
if(arr[i]==0) number0++;
}
ans=(ans%mod+1ll*number1*(number1-1)/2%mod+mod)%mod;
ans=(ans%mod+1ll*number0*(number0-1)/2%mod+mod)%mod;
ans=(ans%mod+1ll*number1*other%mod+mod)%mod;
ans=(ans%mod+1ll*number0*pos%mod+mod)%mod;
ans=(ans%mod+1ll*number2*(number2-1)/2%mod+mod)%mod;
printf("%lld\n",ans);
}
int main()
{
int T=1;
// cin>>T;
while(T--) solve();
return (0^0);
}
C++:
#include <bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
void solve()
{
int n,k;
cin>>n>>k;
vector<int> arr(n+1,0);
for(int i=1;i<=n;i++) cin>>arr[i];
int pos=0;
int neg=0;
for(int i=1;i<=n;i++)
{
if(arr[i]>0) pos++;
else if(arr[i]<0) neg++;
}
long long ans=1ll*pos*neg%mod;
int number1=0;
int other=0;
int number2=0;
int number0=0;
for(int i=1;i<=n;i++)
{
if(arr[i]==1) number1++;
if(arr[i]==2) number2++;
if(arr[i]!=1&&arr[i]>1) other++;
if(arr[i]==0) number0++;
}
ans=(ans%mod+1ll*number1*(number1-1)/2%mod+mod)%mod;
ans=(ans%mod+1ll*number0*(number0-1)/2%mod+mod)%mod;
ans=(ans%mod+1ll*number1*other%mod+mod)%mod;
ans=(ans%mod+1ll*number0*pos%mod+mod)%mod;
ans=(ans%mod+1ll*number2*(number2-1)/2%mod+mod)%mod;
cout<<ans%mod<<'\n';
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T=1;
// cin>>T;
while(T--) solve();
return (0^0);
}
\(A_i*A_j<=A_i+A_j+K\)
化简一下 \(A_i<=1+\frac{K+1}{A_j-1}\)
枚举 \(A_j\) 即可
#include <bits/stdc++.h>
using namespace std;
#define ll long long
constexpr int mod = 1e9 + 7;
void solve(){
int n, k = 0;
cin >> n >> k;
vector<int> a(n);
for(int& i : a)cin >> i;
ll ans = 0;
for(int i = n - 1, cnt = 0; i >= 0; i--){
ans = (ans + cnt) % mod;
cnt += a[i] == 1;
}
for(int i = 2; i <= k + 2; i++){
int lim = 1 + (k + 1) / (i - 1);
for(int j = n - 1, cnt = 0; j >= 0; j--){
if(a[j] <= lim)ans = (ans + cnt) % mod;
cnt += a[j] == i;
}
}
for(int i = n - 1, cnt = 0; i >= 0; i--){
if(a[i] <= 1)ans = (ans + cnt) % mod;
cnt += a[i] >= k + 3;
}
for(int i = 0; i >= -k; i--){
int lim = 1 + (k + 1) / (i - 1);
for(int j = n - 1, cnt = 0; j >= 0; j--){
if(a[j] >= lim)ans = (ans + cnt) % mod;
cnt += a[j] == i;
}
}
for(int i = n - 1, cnt = 0; i >= 0; i--){
if(a[i] >= 1)ans = (ans + cnt) % mod;
cnt += a[i] <= -k - 1;
}
cout << ans << "\n";
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
solve();
}
阅读题意便知道,输出\(a+b\)即可,注意不要爆\(int\),开\(long long\)
C/C++:
#include <stdio.h>
int main()
{
long long a,b;
scanf("%lld%lld",&a,&b);
printf("%lld",a+b);
}
3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升
如何用IDEA2022创建并初始化一个SpringBoot项目?目录如何用IDEA2022创建并初始化一个SpringBoot项目?0. 环境说明1. 创建SpringBoot项目 2.编写初始化代码0. 环境说明IDEA2022.3.1JDK1.8SpringBoot1. 创建SpringBoot项目 打开IDEA,选择NewProject创建项目。 填写项目名称、项目构建方式、jdk版本,按需要修改项目文件路径等信息。 选择springboot版本以及需要的包,此处只选择了springweb。 此处需特别注意,若你使用的是jdk1
文章目录问题B:芝华士威士忌和他的小猫咪们代码&注释问题C:愿我的弹雨能熄灭你们的痛苦代码注释问题D:猜糖果游戏代码注释问题E:有趣的次方代码注释问题F:这是一个简单题代码&注释问题G:打印矩阵代码注释问题H:scz的简单考验代码注释问题I:完美区间代码&注释问题J:是狂热的小迷妹一枚吖~代码&注释2022年10月23日周赛ZZULIOJ问题B:芝华士威士忌和他的小猫咪们时间限制:1Sec内存限制:128MB题目描述芝华士威士忌很喜欢带着他的猫咪们一块跑着玩。但是小猫咪们很懒,只有在离他y米以内才愿意和他一块跑。这天他在坐标为x的位置,他想和他的猫咪们一块跑着玩。有n个小猫咪,第i个小猫咪在坐
代码请进行一定修改后使用,本代码保证100%通过率,本题目提供了java、python、c++三种代码。复盘思路在文章的最后题目描述祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。输入描述第一行输入为调研的地区长,宽,以及准备建设的电站【长宽相等,为正方形】的边长最低要求的发电量之后每行为
https://cloud.189.cn/t/BJbYreYbmUj2(访问码:djz6)(网盘2022-4-1更新)一、刷入armbian。1.1使用AmlBurnTool软件烧录首选底包至固件。烧录完成后断开玩客云电源备用。(靠近hdmi的那个口子。)1.2使用WIn32diskimager软件将emmc固件写入U盘。1.3写入成功后,先将U盘插入玩客云靠近网线接口端的USB口,再接入电源。玩客云通电后指示灯会先亮绿灯,再亮蓝灯,红蓝闪烁,最后蓝灯常亮。等到确定蓝灯常亮后,再拔掉U盘、电源。(最好蓝灯常亮后,启动一次玩客云,看看ssh是否正常。)1.4使用WIn32diskimager写入
Ai-Bot基于流行的Node.js和JavaScript语言的一款新自动化框架,支持Windows和Android自动化。1、Windowsxpath元素定位算法支持支持Windows应用、.NET、WPF、Qt、Java和Electron客户端程序和ie、edgechrome浏览器2、Android支持原生APP和H5界面,元素定位速度是appium十倍,无线远程自动化操作多台安卓设备3、基于opencv图色算法,支持找图和多点找色,1080*2340全分辨率找图50MS以内4、内置免费OCR人工智能技术,无限制获取图片文字和找字功能。5、框架协议开源,除官方node.jsSDK外,用户可
问题描述小蓝负责一个公司的考勤系统,他每天都需要根据员工刷卡的情况来确定每个员工是否到岗。当员工刷卡时,会在后台留下一条记录,包括刷卡的时间和员工编号,只要在一天中员工刷过一次卡,就认为他到岗了。现在小蓝导出了一天中所有员工的刷卡记录,请将所有到岗员工的员工编号列出。输入格式输入的第一行包含一个正整数n,表示一天中所有员工的刷卡记录的条数。接下来n行,每行包含一条刷卡记录,每条刷卡记录的格式为:HH:MM:SSID其中HH:MM:SS表示刷卡时间,HH为一个0到23之间的两位十进制整数(可能含前导0)表示时,MM为一个0到59之间的两位十进制整数(可能含前导0)表示分,SS为一个0到59之间的
2022年山东省职业院校技能大赛高职组“信息安全管理与评估”赛项竞赛规程一、赛项名称赛项名称:信息安全管理与评估英文名称:InformationSecurityManagementandEvaluation赛项组别:高职组赛项归属:电子与信息大类二、竞赛目的(一)引领教学改革通过大赛引领专业教学改革,实现以赛促教、以赛促学、以赛促改的产教结合格局,提升专业培养服务社会和行业发展的能力,为国家信息安全行业培养选拔技术技能型人才。2022年信息安全管理与评估赛项延续历届赛项的竞赛内容,通过赛项检验参赛选手安全网络组建、按照等保要求加固网络系统、安全架构、渗透测试、攻防实战等技术能力,检验参赛队计划
2022年,FinClip团队进行了24个产品迭代,为了丰富FinClip的平台能力,除了核心SDK之外,我们还为开发者们提供了扩展SDK,扩展SDK是一个依赖核心SDK的库,里面提供了核心SDK中所没有的各种小程序API。官方希望通过丰富的扩展SDK库可以帮助开发者减少开发工作,把更多的精力用到实现业务上。那本期,小编就为大家推荐扩展SDK库中8个功能稳定又实用的SDK!(更多详细内容请点击)以下分享以AndroidSDK文件为例,您可登录 资源下载中心下载AndroidSDK文件,扩展SDK也处于在所下载的压缩包中。1、WeChatSDK微信SDK的快捷接入,提供调起微信通过微信小程序获得
2022年C++面试题【常问重点问题】`1、请你说说GET和POST的区别?``2、简述一下C++中的多态?``3、说一说进程有多少种状态,如何转换?``3、请你说说指针和引用的区别``4、简述一下虚函数的实现原理``5、说一说vector和list的区别,分别适用于什么场景?``6、什么是孤儿进程,什么是僵尸进程,如何解决僵尸进程``7、请你说说C++Lambda表达式用法及实现原理``8、请你说说innodb和myisam的区别``9、请你说说数据库的索引是什么结构,为什么不用哈希表?``10、虚析构函数有什么作用?``11、说一说常用的Linux命令?(常见)``12、简述一下堆和栈的区