• Codeforces Round #786 (Div. 3)


    枚举一下就好

    点击查看代码
    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    int T; 
    int ksm(int a,int b){
    	int res=1;
    	while(b){
    		if(b&1)res*=a;
    		a*=a;b>>=1;
    	}
    	return res;
    }
    void solve();
    int main(){
    	cin>>T;
    	while(T--)solve();
         return 0;
    }
    void solve(){
    	int a,b;
    	scanf("%d%d",&a,&b);
    	if(b%a){
    		printf("0 0\n");
    		return;
    	}
    	int t=b/a;
    	if(t==1){
    		printf("1 1\n");
    		return;
    	}
    	for(int i=2;i<=100;i++)
    	for(int j=1;;j++){
    		int kk=ksm(i,j);
    		if(t==kk){
    			printf("%d %d\n",j,i);
    			return;
    		}
    		else if(t<kk)break;
    	}
    	printf("0 0\n");
    }
    

    判断一下就好 没啥好说的

    点击查看代码
    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    int T;
    string s;
    void solve();
    int main(){
    	cin>>T;
    	while(T--)solve();
         return 0;
    }
    void solve(){
    	cin>>s;
    	int t1=s[0]-'a';
    	int ans=t1*25;
    	t1++;
    	int t2=s[1]-'a';t2++;
    	if(t2>t1)t2--;
    	ans+=t2;
    	cout<<ans<<endl;
    }
    

    首先判断只有一种可能的情况 t字符串里面没有'a' 或者有且只有一个'a'没有其他字符

    考虑无限的情况 t中有一个'a'并且长度大于1

    考虑有限的情况 设s中有cnt个'a' 每个'a'有换与不换两种选择 根据乘法原理 答案为ksm(2,cnt)

    点击查看代码
    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    int T;
    ll ksm(ll a,ll b){
    	ll res=1;
    	while(b){
    		if(b&1)res*=a;
    		a*=a;b>>=1;
    	}
    	return res;
    }
    void solve();
    int main(){
    	cin>>T;
    	while(T--)solve();
         return 0;
    }
    void solve(){
    	string s,t;
    	int cnt=0;
    	cin>>s>>t;
    	int l1=s.size(),l2=t.size();
    	for(int i=0;i<l1;i++)
    	if(s[i]=='a')cnt++;
    	if(!cnt||(l2==1&&t[0]=='a')){
    		cout<<1<<endl;
    		return;
    	}
    	int pd=0;
    	for(int i=0;i<l2;i++)
    	if(t[i]=='a')pd=1;
    	if(pd){
    		cout<<"-1"<<endl;
    		return;
    	}else{
    		cout<<ksm(2,cnt)<<endl;
    	}
    }
    

    发现规律 a[n]和a[n-1]一定是分居两侧 两者先后循序可以改变 取的话也是

    所以从后往前两两排序 如果最终能够将整个序列排序 那就是YES 否则为NO

    点击查看代码
    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    const int maxn=2e5+5;
    int T;
    int a[maxn];
    void solve();
    int main(){
    	cin>>T;
    	while(T--)solve();
         return 0;
    }
    void solve(){
    	int n;cin>>n;
    	for(int i=1;i<=n;i++)
    	scanf("%d",&a[i]);
    	int pre=1e9;
    	for(int i=n;i>=1;i-=2){
    		if(i-1>=1){
    			if(pre<max(a[i],a[i-1])){
    				cout<<"NO"<<endl;
    				return;
    			}else pre=min(a[i],a[i-1]);
    		}else{
    			if(pre<a[i]){
    				cout<<"NO"<<endl;
    				return ;
    			}
    		}
    	}
    	cout<<"YES"<<endl;
    }
    
  • 相关阅读:
    Redis概述与安装
    CentOS-Linux系统下安装MySQL
    CentOS-Linux系统下安装Tomcat
    CentOS-Linux系统下安装JDK
    占位符
    设计模式之装饰者模式
    Servlet3.0
    注解入门
    PHP如何实现99乘法表?
    2017年PHP程序员未来路在何方?(转载)
  • 原文地址:https://www.cnblogs.com/wzxbeliever/p/16222899.html
Copyright © 2020-2023  润新知