Codeforces Round #447(Div. 2)

A题:签到题,问你一个字符串中存在多少QAQ,数据量不大,暴力就可以。

AC代码:

#include <bits/stdc++.h>

using namespace std;

int main()
{
string str;
cin>>str;
int len=str.size();
int ans=0;
for(int i=0;i<len;i++){
for(int j=i+1;j<len;j++){
for(int k=j+1;k<len;k++){
if(str[i]=='Q'&&str[j]=='A'&&str[k]=='Q')ans++;
}
}
}
    cout << ans<< endl;
    return 0;
}

B题:给你n,m,k。题意是,给你一个n×m的矩阵,让你怎样构造矩阵,使得这个矩阵的每一行每一列的乘积都为k。

首先是不合法的情况,当n和m相加为奇数的时候,并且k为-1,这个举点例子就可以推出来。

然后是合法的情况,对于一个n×m的矩阵,我们可以随意安排(n-1)×(m-1)内矩阵的点,最后的时候,用最后一行和最后一列调一下就肯定能调出来正确结果。所以最终的答案是:2的(n-1)方的(m-1)次方。

AC代码:

#include<bits/stdc++.h>
#include<string>
#include<cstring>
#include<stdio.h>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
const int maxn =1000;
# define mod 1000000007
ll quickpow(ll t1,ll t2){
if(t2==0)return 1;
t2--;
ll ans=t1;
while(t2){
if(t2&1)ans=ans*t1%mod;
t1=t1*t1%mod;
t2>>=1;
}
return ans;
}
int main(){
ll n,m,k;
cin>>n>>m>>k;
if((n+m)%2!=0&&k==-1){
cout<<0<<endl;
}
else cout<<quickpow(quickpow(2,n-1),m-1)<<endl;
return 0;
}

C题:给你n和n个数,问你在需要多少个数的前提下,能够出现上述数的任意个相邻数的gcd,如果无法构成就输出-1

首先判断非法情况,就是在给定的数里面,有的数构成的gcd并没有在数列中出现,这种肯定是不合法的。然后对于合法的,我们可以找到一个数列中的最小的数,然后每一个数的后面都插上这个最小的数,这样的话,对于数列中本来的数,可以让i和j相等的时候得到,然后对于下面的,直接用最小的数给卡住了,然后照样输出就可以了。

AC代码:

#include<bits/stdc++.h>
#include<string>
#include<cstring>
#include<stdio.h>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
const int maxn =1000000+100;
# define mod 1000000007
int a[maxn];
int ans[maxn];
map<int,int>vis;
int main()
{
    int n;
    cin>>n;
    int minn=inf;
    for(int i=1; i<=n; i++)
    {
        cin>>a[i];
        vis[a[i]]=1;
        minn=min(minn,a[i]);
    }
    int flag=1;
    for(int i=1; i<=n; i++)
    {
        int temp=a[i];
        for(int j=1; j<=i; j++)
        {
            temp=__gcd(temp,a[j]);
            if(vis[temp]==0)flag=0;
        }
    }
    if(flag==0)cout<<-1<<endl;
    else
    {
        cout<<n*2<<endl;
        for(int i=1; i<=n; i++)
        {
        cout<<a[i]<<" "<<minn<<" ";
        }
        cout<<endl;
    }
    return 0;
}

 

posted @ 2018-12-03 14:26  Let_Life_Stop  阅读(149)  评论(0编辑  收藏  举报