为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
输入:
有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。
输出:
若两条DNA序列相关,则输出"yes",否则输出"no"。
样例输入:
0.85
ATCGCCGTAAGTAACGGTTTTAAATAGGCC
ATCGCCGGAAGTAACGGTCTTAAATAGGCC
样例输出:
yes
#include<bits/stdc++.h>
using namespace std;
int main(){
double x,ans=0.0;
int t=0,n;
string a,b;
cin>>x;
cin>>a>>b;
for(int i=0;i<a.size();i++)if(a[i]==b[i])t++;
n=a.size();
ans=t*1.0/n;
if(ans>=x)cout<<"yes";
else cout<<"no";
return 0;
}
Excel单元格的地址表示很有趣,它使用字母来表示列号。
比如,
A表示第1列,
B表示第2列,
Z表示第26列,
AA表示第27列,
AB表示第28列,
BA表示第53列,
...
当然Excel的最大列号是有限度的,所以转换起来不难。
多多想把这种表示法一般化,把很大的数字转换为很长的字母序列。
输入格式:
输入一个整数N(0<N<=1000000000)
输出格式:
输出对应的地址表示方式。
输入样例:
53
输出样例:
BA
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a;
int yushu;
int b[100];
scanf("%lld",&a);
int i=0,j;
while(a){
yushu=a%26;
if(yushu==0)yushu=26;
a=(a-yushu)/26;
b[i++]=yushu;
}
for(j=i-1;j>=0;j--)printf("%c",b[j]+'A'-1);
return 0;
}
给出一个字符串数组String stringList[1..N] ,已知stringList数组里面N个字符串长度都不相同。到目前为止,奶牛Bessie已经学会了两种排序字符串的方法:
1、它可以按字典顺序对字符串进行排序。例如,"car"<"carriage"<"cats"<"doggies"。
2、它还学会了根据字符串的排序长度升序排列。例如,"car"<"cats"<"doggies"<"carriage"。
Bessie现在想知道stringList是否以这两种方式中的任何一种排序。
如果stringList按字典顺序排序但不根据字符串长度排序,则输出"lexicographically"。
如果stringList根据字符串长度排序但不按字典顺序排序,则返回"lengths" 。
如果以两种方式排序,则返回"both"。
否则,返回"none"。
输入格式
输入文件名:
第一行,一个整数N。1<=N<=50。
接下来有N行,每行一个字符串,第i行字符串是stringList[i],字符串由小写英文字母构成,长度不超过50。
输出格式
输出文件名:
一个字符串,不用输出双引号。
输入/输出例子1
输入:
3
a
aa
bbb
输出:
both
输入/输出例子2
输入:
3
c
bb
aaa
输出:
lengths
输入/输出例子3
输入:
2
etdfgfh
aio
输出:
none
#include<bits/stdc++.h>
using namespace std;
bool l(string List[],int N){
for(int i=1;i<N;i++)
if(List[i]<List[i-1])
return false;
return true;
}
bool j(string List[],int N){
for(int i=1;i<N;i++)
if(List[i].size()<List[i-1].size())
return false;
return true;
}
string w(string List[],int N){
bool s=l(List,N);
bool x=j(List,N);
if(s&&x)
return "both";
else if(s)
return "lexicographically";
else if(x)
return "lengths";
else
return "none";
}
int main() {
int N;
cin>>N;
string List[N];
for(int i=0;i<N;i++)
cin>>List[i];
string sum=w(List,N);
cout<<sum<<endl;
return 0;
}
某国有禁言单词X,输入N个单词,如果某个单词中包含禁言单词X(不分大小写),则要被出现的单词X位置要替换为"***",然后才输出。
输入格式
第一行:一个单词X,长度<10。
第二行:一个正整数N <10^5。
下面有n行,每行一个单词,长度<20。
输出格式
n行,每行一个单词。
输入样例
SB
4
Hello
Sbstring
KillsbAA
word
输出样例
Hello
***string
Kill***AA
word
#include<bits/stdc++.h>
using namespace std;
string s, s1, s2, x, ss;
int n, p;
int main() {
cin>>s;
for(int i=0; i<s. size (); i++)
if(s[i]>='a' && s[i]<= 'z')
s[i]=s[i]-'a' +' A';
cin>>n;
for(int i=0; i<n; i++) {
cin>>x;
while(1) {
ss=x;
for(int i=0; i<x. size (); i++)
if(x[i]>='a' && x[i] <= 'z')
x[i]=x[i]-'a'+'A';
p=x. find(s) ;
if(p ==- 1) break;
s1=ss. substr(0, p);
s2=ss. substr (p+s. size (), x. size ()-p-s. size ());
//substr(开始位置,长度)
//KillsbAA p=4 s. size ()=2 x. size ()=8
x=s1+"***"+s2;
}
cout << ss << endl;
}
return 0;
}
一颗彗星的后面有一个不明飞行物(UFO),这个UFO经常到地球上来寻找忠实的追随者,把他们带到宇宙中去。但由于舱内空间有限,它们每一趟只能带一组追随者。尽管如此,外星人仍然想出了一个妙法来决定带谁走:以A代表1,B代表2,……Z代表26,USACO即21*19*1*3*15=17955,倘若此组人的组名所代表的数字与彗星的名字所代表的数字分别除以47,余数相同,则彗星名与组名相匹配,UFO带此组人飞向宇宙,余数不同则不匹配,故不带。写一程序,打印出彗星名与组名是否相匹配,是打印"GO",否打印"STAY"。
输入格式
输入文件包含两行,第一行为慧星名,第二行为组名。(字母均为大字)
输出格式
显示是否匹配的信息。
输入样例
COMETHALEBOPP
HEAVENSGATE
输出样例
GO
#include<bits/stdc++.h>
using namespace std;
int convert(char a);
int multimodo(char a[]);
int main(){
char comet[1000];
char follow[1000];
int r1,r2;
r1=multimodo(comet);
r2=multimodo(follow);
if(r1==r2){
printf("GO\n");
}
else{
printf("STAY\n");
}
return 0;
}
int convert(char a){
int t=(int)(a)-64;
return t;
}
int multimodo(char a[]){
int i;
int mul=1;
for(i=0;i<1000;i++){
scanf("%c",&a[i]);
if(a[i]=='\n')
break;
mul=(mul*convert(a[i]))%47;
}
return mul;
}
【题目描述】
有一种英文字谜游戏,一开始创作者选一个称为"根"的单词R,然后可能多次打乱 R,连接到 R 单词后面。例如:bbabababb,是根单词 bba,与乱序单词 bab、abb 连接组成。
字谜参加者要面对一个字符串,找出最短的"根"单词。如果找不到输出-1。
【输入格式】
第 1 行:长度不超过 100,000 的小写英文字母组成的字符串。
【输出格式】
最短的根单词(是输入字符串的前缀)。如果找不到根单词,输出-1。
【输入输出样例】
输入1
aaaa
输出1
a
输入2
ab
输出2
-1
输入3
bbabab
输出3
bba
#include<bits/stdc++.h>
#define cutele main
using namespace std;
const int N = 1e6+7;
string s;
char ch[N];
int a[26],b[26];
int cutele(){
cin>>ch;
s=ch;
int n=strlen(ch);
bool flag=false;
for(int i=1;i<n;i++){
if(s[i]!=s[0]){
flag=true;
break;
}
}
if(!flag){
cout<<s[0]<<endl;
return 0;
}
flag=false;
for(int i=2;i<n;i++)
if(n%i==0){
memset(a,0,sizeof a);
flag=true;
string last=s.substr(0,i);
for(int w=0;w<last.size();w++)
a[last[w]-'a']++;
for(int j=i;j<n;j+=i){
string now=s.substr(j,i);
memset(b,0,sizeof b);
for(int k=0;k<now.size();k++)
b[now[k]-'a']++;
bool flag2=true;
for(int q=0;q<26;q++)
if(a[q]!=b[q]){
flag2=false;
break;
}
if(!flag2){
flag=false;
break;
}
}
if(flag){
cout<<s.substr(0,i)<<endl;
return 0;
}
}
if(!flag) puts("-1");
return 0;
}