提交地址:http://poj.youdao.com/practice/J/

描述
‘道’是中国古代哲学的重要范畴。用以说明世界的本原、本体、规律或原理。在不同的哲学体系中,其涵义有所不同。老子所写的《道德经》是关于‘道’的经典著作。

道的原始涵义指道路、坦途,以后逐渐发展为道理,用以表达事物的规律性。这一变化经历了相当长的历史过程。《易经》中有“复自道,何其咎”(《小畜》),“履道坦坦”(《履》),“反复其道,七日来复”(《复》),都为道路之义。

《尚书•洪范》中说:“无有作好,遵王之道;无有作恶,遵王之路。无偏无党,王道荡荡;无党无偏,王道平平;无反无侧,王道正直”。这里的道,已经有正确的政令、规范和法度的意思,说明“道”的概念已向抽象化发展。

—- 节选自有道词典(http://dict.youdao.com)

  Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。它把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

有道的工程师闲暇之余,将Base64编码改成了Base4编码,即把每个8Bit的字节转换成4个2Bit的字节,然后以4个字符来代替。编码和字符的对应方案如下:
00 —- a
01 —- o
10 —- d
11 —- 空格
这样,编码后的字符串就只会含有字符‘d’,'a’,'o’和空格。

例如字符y ,其ASCII码是121,对应的二进制串是01111001,这样分成 01 11 10 01四块后,用Base4编码后的字符串为”o do”。

有道的工程师很好奇,按照这种编码方式,编码后的字符串中含有多少个完整的dao呢?一个完整的dao由连续的‘d’,'a’,'o’三个字符组成。
输入
第一行有一个正整数n,代表接下来有n个待编码的原串。(1 <= n <= 10)
接下来有n行,每行有一个长度不超过106的原串,原串中的字符可能为ASCII码中除换行符以外的任意可见字符。
输出
共有n行,每行为一个整数k, 表示输入数据中对应的原串用Base4编码后含有多少个完整的dao。
样例输入

2
www.youdao.com
dict.youdao.com

样例输出

1
1

提示
Java时限是标准时限的3倍,而且对于每个输入文件都有100ms的额外IO时间
----------------------------------------------------------
最开始一直超时,后来改进了算法,不用转换成字符串直接进行求解。用了740ms 惊险ac。。。

#include <iostream>
#include <string>
#include <math.h>
#include <algorithm>
#include <string.h>
#include <fstream>
using namespace std;
int main(){
    //ifstream cin("test.in");
    int T;
    cin>>T;
    while(T--){
    string s;

    int num=0;
    cin>>s;
    int statue=0;
    int result=0;
    for(long i =0;i<s.length();i++)
{
           int S[4];
        int w=(int)s[i];
        S[0]=w>>6;w%=64;
        S[1]=(w)>>4;w%=16;
        S[2]=w>>2;
        S[3]=w%4;

       for(int x=0;x<4;x++)
        {
       int ch = S[x];
                if (ch == 2)statue = 1;
                else if (ch == 0 && statue == 1) statue = 2;
                else if (ch == 1 && statue == 2) statue = 3;
                else statue = 0;
                if (statue == 3) {
                    result++;
                }
        }
    }

    cout<<result<<endl;
    }
    return 1;

}
1 Star2 Stars3 Stars4 Stars5 Stars (35 votes, average: 4.50 out of 5)
Loading ... Loading ...

标签:,

5 Responses


  1. cr7 on 31 五 2010

    写的还行啊。。
    ps:这网站是你自己挂上网的?

  2. 挥着翅膀的的鳖 on 31 五 2010

    对亚。我自己挂上去的。。。感觉写的有点费时。。。

  3. xiao4521595668 on 14 六 2010

    请问你用什么测试你的程序运行时间的啊,谢谢

  4. xiao4521595668 on 14 六 2010

    你这个写的比我写的好多了。

  5. 挥着翅膀的的鳖 on 14 六 2010

    @xiao4521595668

    比赛完开放了几天的练习平台,在那测试的。不过如果你能找到测试数据 在linux下可以用time命令来测试


Leave your comment