cpp
#include <iostream>
using namespace std;
int main() {
int n,k;
scanf("%d%d",&n,&k);
string s;
if(k*3>n)
{
int res=-1;
printf("%d\n",res);
}
else
{
for(int i=1;i<=k;i++)
{
s.append("you");
}
for(int i=3*k;i<n;i++)
{
s.append("y");
}
cout<<s<<endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")
cpp
#include <iostream>
using namespace std;
long long n;
int main() {
scanf("%lld",&n);
long long w;
if(n%3==0)
{
w=n/3-1;
printf("%lld\n",w);
}
else
{
w=n/3;
printf("%lld\n",w*2);
}
// for(int i=1;i<=w;i++)
// {
// printf("%d %d\n",i*3,n-i*3);
// }
return 0;
}
// 64 位输出请用 printf("%lld")
题解:long long sum1=0;//记录实际的加和减
long long sum2=0;//记录实际的加,并且当执行减时要和0比较
最后遍历对max(arr[i]+sum1,sum2)求和;
cpp
#include <iostream>
#include<stdio.h>
#include<cmath>
// #include <algorithm>
using namespace std;
int arr[100005];
int indexadd[100005];
int mod=1e9+7;
int main() {
int n,k;
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
long long sum1=0;//记录实际的加和减
long long sum2=0;//记录实际的加,并且当执行减时要和0比较
while(k--){
int op,x;
scanf("%d%d",&op,&x);
if(op==1)
{
sum1+=x;
sum2+=x;
}
else{
sum1-=x;
sum2=max(sum2-x,(long long)0);
}
}
long long res=0;
for(int i=0;i<n;i++)
{
res+=max(arr[i]+sum1,sum2);
res=res%mod;
}
printf("%lld\n",res);
return 0;
}
// 64 位输出请用 printf("%lld")
首选求出a和b所有的质因子,以及每个质因子对应的个数,然后使用dfs进行搜素,找出所有可能的因子
cpp
#include <iostream>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
map<long long,long long>mp1;
map<long long,long long>mp;
long long a1[20000];
vector<long long>res;
int Knum=0;
void dfs(int n,int step,long long value)
{
if(step==n)
{
if(!mp1[value])
{
mp1[value]++;
res.push_back(value);
Knum++;
}
return;
}
int k=mp[a1[step]];
for(int i=0;i<=k;i++)
{
if(i==0)
{
dfs(n,step+1,value);
}
else{
value=value*a1[step];
dfs(n,step+1,value);
}
}
return ;
}
int main() {
long long a,b;
scanf("%lld%lld",&a,&b);
for(long long i=2;i*i<=a;i++)
{
while(a%i==0&&a>1)
{
mp[i]++;
a=a/i;
}
}
if(a>1)
{
mp[a]++;
}
for(long long i=2;i*i<=b;i++)
{
while(b%i==0&&b>1)
{
mp[i]++;
b=b/i;
}
}
if(b>1)
{
mp[b]++;
}
int num=0;
map<long long,long long>::iterator it=mp.begin();
while(it!=mp.end())
{
long long x=it->first;
a1[num++]=x;
it++;
}
dfs(num,0,1);
sort(res.begin(),res.end());
printf("%d\n",Knum);
for(int i=0;i<res.size();i++){
if(i==0)
printf("%lld",res[i]);
else{
printf(" %lld",res[i]);
}
}
printf("\n");
return 0;
}
// 64 位输出请用 printf("%lld")
sql
select
date(o.order_time) as order_date,
o.user_id,
count(o.user_id) as order_nums,
u.vip
from order_tb o
left join uservip_tb u
on o.user_id = u.user_id
group by o.user_id, date(o.order_time)
having count(o.user_id) > 1