1.统计每种字母各出现了几次
#include<iostream>
#include<string>
using namespace std;
int a[27]; // a[0]~a[25]分别代表"a~z"26个字母,再加上结束符共27个字符。
int main()
{
string s;
int i=0;
while( getline(cin,s) )
{
i=0;
while( s!=" " && i < s.size() )
{
if(s[i]>='a'&&s[i]<='z')
a[s[i]-'a'+1]++; // 如果字符串s此时s[0]为b,则a[2]++,a[2]=1,即b->1;
i++;
}
}
for(int j=1;j<=26;j++)
if(a[j])
cout << (char)(j+'a'-1) <<":"<< a[j] << endl;
//printf("%c:%d\n",j+'a'-1,a[j]);
return 0;
}
2.筛法求素数
#include<iostream>
using namespace std;
//T个询问,每次询问一个整数N,每次输出前N个数中素数的个数。T<=1亿 N<=1000000
int c[1000001]; //刚开始,所有数都标记为质数
int a[1000001]; //表示前N个数总共有多少个素数
int m=0;
int main()
{
//
for(int i=2;i<=1000000;i++)
{
//if(c[i]==0) //if(!a[i])
for(int j=2*i;j<=1000000;j=j+i)
c[j]=1;
}
for(int i=2;i<=1000000;i++)
{
if(c[i]==0)
m++;
a[i]=m;
}
int T;
cin>>T;
int n;
for(int i=1;i<=T;i++)
{
cin>>n;
cout<<a[n]<<"\n";
}
return 0;
}
两者都是通过提前写好数据库,与库内数据进行比较来缩短程序编译时间。