列表

详情


NC200615. J-试试划水

描述

    师兄猜你看的第一道题是这道哈哈哈。没错,师兄给你送福利了,这道题你只需要呆萌呆萌的把下面的代码交上去就行了,师兄是好人【坏笑】。

#include<stdio.h>

#include<string.h>
char ch[100000+5];

int main()

{    

    int t;

    scanf("%d",&t);

    while(t--) { 

        int len,ans=0;    

        scanf("%s",ch);  

        len=strlen(ch);

        for(int i=0;i<len;i++)

           for(int j=i+1;j<len;j++)

               for(int k=j+1;k<len;k++)    

                  if(ch[i]=='Z'&&ch[j]=='Q'&&ch[k]=='U')        

                      ans++;  

         printf("%d\n",ans);

    }

    return 0;

}


输入描述

第一行一个整数t代表有t组测试用例,0≤t≤100。

接下来t行,输入一个仅包含'Z','Q'和'U'三种字符的字符串s。( 0<|s|≤100000,|s|为字符串s的长度)

输出描述

每行一个整数表示代码中ans的值。

示例1

输入:

2
ZQUZQU
ZQUZQUZQU

输出:

4
10

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 518ms, 内存消耗: 608K, 提交时间: 2019-12-29 14:19:43

#include<bits/stdc++.h>
using namespace std;
int main(){
	int t,len;
	long long z,zq,zqu;
	string s;
	cin>>t;
    while(t--){
    	cin>>s;
    	len=s.size();
    	z=zq=zqu=0;
    	for(int i=0;i<s.size();i++){
    		if(s[i]=='Z')z++;
    		else if(s[i]=='Q')zq+=z;
    		else zqu+=zq;
		}
		cout<<zqu<<endl;
	}
}

C(clang 3.9) 解法, 执行用时: 137ms, 内存消耗: 4480K, 提交时间: 2019-12-29 19:49:15

#include <stdio.h>
typedef long long ll;
int main()
{
	int t;scanf("%d",&t);
	char a[100005];
	while(t--){
		scanf("%s",a);
		ll i,c,q,u;
		c=q=u=0;
		for(i=0;a[i]!='\0';i++) {
			if(a[i]=='Z') c++;
			if(a[i]=='Q') q+=c;
			if(a[i]=='U') u+=q;
		}
		printf("%lld\n",u);
	}
}

C++11(clang++ 3.9) 解法, 执行用时: 422ms, 内存消耗: 680K, 提交时间: 2020-05-17 13:33:38

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long t,a,b,c,i;
	cin>>t;
	while(t--){
		string s;
		cin>>s;
		a=b=c=0;
		for(i=0;i<s.size();i++){
			if(s[i]=='Z')a++;
			else if(s[i]=='Q')b+=a;
			else if(s[i]=='U')c+=b;
		}
		cout<<c<<endl;
	}
}

上一题