P1308统计单词数
题目描述
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章
中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。
输入输出格式
输入格式:
输入文件名为stat.in ,2 行。
第1 行为一个字符串,其中只含字母,表示给定单词;
第2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
输出格式:
输出文件名为stat.out 。
只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。
输入输出样例
说明
数据范围
1≤ 单词长度≤10。
1≤ 文章长度≤1,000,000。
noip2011普及组第2题
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
string s1,s2;
cin>>s1;
//scanf("%s",&s1);
//getline(cin,s1);
getline(cin,s2);
getline(cin,s2);
s2=s2+" ";
// cout<<s1.size()<<endl;
int l1=s1.size();
int l2=s2.size();
int sum=0;
int k=-1;
int t=0;
for(int i=0;i<l1;i++)
{
s1[i]=tolower(s1[i]);
}
for(int i=0;i<l2;i++)
{
s2[i]=tolower(s2[i]);
}
//cout<<s2<<endl;
for(int i=0;i<l2;i++)
{
if(s2[i]==' ')
{
string s3=s2.substr(t,i-t);
// cout<<s3<<endl;
if(s1==s3)
{
if(k==-1)k=t;
sum++;
// cout<<i<<endl;
}
t=i+1;
}
}//cout<<s1;
if(sum==0)cout<<-1;
else cout<<sum<<" "<<k<<endl;
return 0;
}
题目描述
给定一个数,请将该数各个位上数字反转得到一个新数。
这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数只改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为0(除非小数部分除了0没有别的数,那么只保留1个0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为0),本次没有负数。
输入输出格式
输入格式:
一个数s
输出格式:
一个数,即s的反转数
输入输出样例
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
char c[25];
cin>>c;
int book=0,k=-1;
int l=strlen(c);
for(int i=0;i<l;i++)
{
if(c[i]=='.')
{
book=1;
k=i;
break;
}
else if(c[i]=='/')
{
book=2;
k=i;
break;
}
else if(c[i]=='%')
book=3;
}
if(book==0)
{
if(l==1&&c[0]=='0')cout<<0<<endl;
else
{
int t=-1;
for(int i=l-1;i>=0;i--)
{
if(c[i]!='0')
{
t=i;
break;
}
}
for(int i=t;i>=0;i--)
{
cout<<c[i];
}
cout<<endl;
}
}
if(book==1||book==2)
{
int t=-1;
for(int i=k-1;i>=0;i--)
{
if(c[i]!='0')
{
t=i;
break;
}
}
if(t==-1)cout<<0;
else
{
for(int i=t;i>=0;i--)
{
cout<<c[i];
}
}
if(book==1) cout<<'.';
else cout<<'/';
t=-1;
for(int i=l-1;i>k;i--)
{
if(c[i]!='0')
{
t=i;
break;
}
}
int t2=-1;
for(int i=k+1;i<l;i++)
{
if(c[i]!='0')
{
t2=i;
break;
}
}
if(t==-1)cout<<0<<endl;
else
{
for(int i=t;i>=t2;i--)
{
cout<<c[i];
}
cout<<endl;
}
}
if(book==3)
{
l=l-1;
int t=-1;
for(int i=l-1;i>=0;i--)
{
if(c[i]!='0')
{
t=i;
break;
}
}
if(t==-1)cout<<0;
else
{
for(int i=t;i>=0;i--)
{
cout<<c[i];
}
}
cout<<'%'<<endl;
}
return 0;
}