概要
题目很简单。
T3 压位没开 $\texttt{LL}$ 痛失 $70pts$
痛失美丽的 U 盘
题目
T1
大水题,直接根据题意描述即可
#include<bits/stdc++.h>
using namespace std;
string s;
int ss,ff,mm;
void f(int x)
{
if(x<10)
{
cout<<"0"<<x;
}
else cout<<x;
}
int main()
{
freopen("clock.in","r",stdin);
freopen("clock.out","w",stdout);
cin>>s;
ss=(s[0]-48)*10+(s[1]-48);
ff=(s[3]-48)*10+(s[4]-48);
mm=(s[6]-48)*10+(s[7]-48);
mm++;
if(mm==60)
{
ff++;
mm=0;
}
if(ff==60)
{
ss++;
ff=0;
}
if(ss==24)
{
ss=0;
}
f(ss);
cout<<":";
f(ff);
cout<<":";
f(mm);
cout<<"\n";
return 0;
}
T2
$\texttt{DFS}$ 就可以过
老Q机子太快了
如果有更好方法请提出
#include<bits/stdc++.h>
using namespace std;
int n,a[10],b[10],ans=19198100;
bool visi[10],visj[10];
void dfs(int depth,int s,int cnt)
{
if(depth>n)
{
ans=min(ans,cnt);
return;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
int tnc=max(cnt,abs(s+a[i]*b[j]));
if(!visi[i] && !visj[j] && tnc<ans)
{
visi[i]=1;visj[j]=1;
dfs(depth+1,s+a[i]*b[j],tnc);
visi[i]=0;visj[j]=0;
}
}
}
return;
}
int main()
{
freopen("hanger.in","r",stdin);
freopen("hanger.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
cin>>b[i];
}
dfs(1,0,0);
cout<<ans<<"\n";
return 0;
}
T3
直接 $l$ 枚举到 $r$ 并 $\texttt{checker}$ 一下即可
#include<bits/stdc++.h>
#define int long long
using namespace std;
int l,r,ans;
int power[]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
int checker(int x)
{
int y=0;
while(x)
{
y+=(power[x%10]);
x/=10;
}
for(int i=0;i<=9;i++)
{
if(y/power[i]%10%2)
{
return 0;
}
}
return 1;
}
int main()
{
freopen("digits.in","r",stdin);
freopen("digits.out","w",stdout);
cin>>l>>r;
for(int i=l;i<=r;i++)
{
ans+=checker(i);
}
cout<<ans<<"\n";
return 0;
}
T4
字符串处理 $+$ 类似斐波那契数列(递推预处理一下)
如果有 m 或 w 则不存在
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const LL MOD=1e9+7;
struct node
{
int num;
char val;
}a;
LL Fib[100010],ans=1;
int S;
string s;
bool flag=0;
int main()
{
freopen("note.in","r",stdin);
freopen("note.out","w",stdout);
cin>>s;
S=s.size();
a.val='A';
Fib[0]=1;
Fib[1]=1;
Fib[2]=2;
for(int i=3;i<=S;i++)
{
Fib[i]=(Fib[i-1]+Fib[i-2])%MOD;
}
for(int i=0;i<S;i++)
{
if(s[i]=='n')
{
if(a.val=='n')
{
a.num++;
}
else
{
ans=ans*Fib[a.num]%MOD;
a.val='n';
a.num=1;
}
}
else if(s[i]=='u')
{
if(a.val=='u')
{
a.num++;
}
else
{
ans=ans*Fib[a.num]%MOD;
a.val='u';
a.num=1;
}
}
else if(s[i]=='w' || s[i]=='m')
{
flag=1;
break;
}
else
{
ans=ans*Fib[a.num]%MOD;
a.val='A';
a.num=0;
}
}
ans=ans*Fib[a.num]%MOD;
if(flag) ans=0;
cout<<ans<<"\n";
return 0;
}