NC221231. 小圆前辈的排列组合
描述
输入描述
仅包含一行字符串 s
每个字符可能为数字或者大小写字母
输出描述
如果小焰同学可以做有意义的事情
输出 "Yes"
否则输出 "No"
(不带引号)
示例1
输入:
CCSU
输出:
No
示例2
输入:
CCCSSUU
输出:
Yes
C(clang11) 解法, 执行用时: 286ms, 内存消耗: 1296K, 提交时间: 2021-04-24 17:19:31
#include <stdio.h> #include <string.h> #include <math.h> int main(){ char a[1000000]={}; scanf("%s",&a); int i,x,q=strlen(a); int l=0,m=0,n=0; for(i=2;i<=q;i++) { int j=(int)sqrt(i); for(x=2;x<=j;x++) { if(i%x==0){ break;} } if(x>j){ if(a[i-1]=='C') { l++; } if(a[i-1]=='S') { m++; } if(a[i-1]=='U') { n++; } } } if(l>=2 && m>=1 && n>=1) { printf("Yes"); } else { printf("No"); } return 0; }
Python3 解法, 执行用时: 650ms, 内存消耗: 6720K, 提交时间: 2022-03-24 15:18:33
def su_shu(x): if x <= 1: return False if x % 2 == 0 and x != 2: return False i = 3 while i * i <= x: if x % i == 0: return False i += 2 return True s = input() a = list() for i in range(len(s)): if s[i] in 'CSU': if su_shu(i + 1): a.append(s[i]) if 'C' in a: a.remove('C') if 'C' in a and 'S' in a and 'U' in a: print('Yes') else: print('No')
C++ 解法, 执行用时: 235ms, 内存消耗: 2528K, 提交时间: 2021-05-26 13:58:52
#include<bits/stdc++.h> using namespace std; int s[129]; bool susu(int n){ for(int i=2;i*i<=n;i++) if(n%i == 0) return false; return true; } int main(){ string t; cin>>t; int z=t.length(); for(int i=0;i<z;i++) if(susu(i+1)) s[t[i]]++; if(s['C']>1&&s['S']&&s['U'])printf("Yes"); else printf("No"); }