北邮新OJ98

来源:互联网 发布:友窝能看m3u8源码 编辑:程序博客网 时间:2024/06/02 05:47

http://code.bupt.edu.cn/problem/p/98/

这题其实很蛋疼,在九度OJ一直过不了,但是在北邮OJ相同的代码直接AC

主要就是考虑数据包长度不是固定的即可

当时被九度的判题整疯了,代码也写的很长很繁琐

#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>using namespace std; void P(char str[],int n){    //int len=strlen(str);    cout<<"Case #"<<n<<endl;         //求数据包长度    int temp1,temp2,temp3,temp4;    if('0'<=str[6]&&str[6]<='9')        temp1=str[6]-'0';    else if('a'<=str[6]&&str[6]<='z')        temp1=str[6]-'a'+10;    else        temp1=str[6]-'A'+10;         if('0'<=str[7]&&str[7]<='9')        temp2=str[7]-'0';    else if('a'<=str[7]&&str[7]<='z')        temp2=str[7]-'a'+10;    else        temp2=str[7]-'A'+10;             if('0'<=str[9]&&str[9]<='9')        temp3=str[9]-'0';    else if('a'<=str[9]&&str[9]<='z')        temp3=str[9]-'a'+10;    else        temp3=str[9]-'A'+10;             if('0'<=str[10]&&str[10]<='9')        temp4=str[10]-'0';    else if('a'<=str[10]&&str[10]<='z')        temp4=str[10]-'a'+10;    else        temp4=str[10]-'A'+10;             int T_len=temp1*4096+temp2*256+temp3*16+temp4;    cout<<"Total length = "<<T_len<<" bytes"<<endl;         //求源IP    int a,b;    if('0'<=str[36]&&str[36]<='9')        a=str[36]-'0';    else if('a'<=str[36]&&str[36]<='z')        a=str[36]-'a'+10;    else        a=str[36]-'A'+10;             if('0'<=str[37]&&str[37]<='9')        b=str[37]-'0';    else if('a'<=str[37]&&str[37]<='z')        b=str[37]-'a'+10;    else        b=str[37]-'A'+10;      temp1=a*16+b;         if('0'<=str[39]&&str[39]<='9')        a=str[39]-'0';    else if('a'<=str[39]&&str[39]<='z')        a=str[39]-'a'+10;    else        a=str[39]-'A'+10;             if('0'<=str[40]&&str[40]<='9')        b=str[40]-'0';    else if('a'<=str[40]&&str[40]<='z')        b=str[40]-'a'+10;    else        b=str[40]-'A'+10;    temp2=a*16+b;         if('0'<=str[42]&&str[42]<='9')        a=str[42]-'0';    else if('a'<=str[42]&&str[42]<='z')        a=str[42]-'a'+10;    else        a=str[42]-'A'+10;             if('0'<=str[43]&&str[43]<='9')        b=str[43]-'0';    else if('a'<=str[43]&&str[43]<='z')        b=str[43]-'a'+10;    else        b=str[43]-'A'+10;    temp3=a*16+b;         if('0'<=str[45]&&str[45]<='9')        a=str[45]-'0';    else if('a'<=str[45]&&str[45]<='z')        a=str[45]-'a'+10;    else        a=str[45]-'A'+10;             if('0'<=str[46]&&str[46]<='9')        b=str[46]-'0';    else if('a'<=str[46]&&str[46]<='z')        b=str[46]-'a'+10;    else        b=str[46]-'A'+10;    temp4=a*16+b;    cout<<"Source = "<<temp1<<"."<<temp2<<"."<<temp3<<"."<<temp4<<endl;         //目的IP    if('0'<=str[48]&&str[48]<='9')        a=str[48]-'0';    else if('a'<=str[48]&&str[48]<='z')        a=str[48]-'a'+10;    else        a=str[48]-'A'+10;    if('0'<=str[49]&&str[49]<='9')        b=str[49]-'0';    else if('a'<=str[49]&&str[49]<='z')        b=str[49]-'a'+10;    else        b=str[49]-'A'+10;    temp1=a*16+b;         if('0'<=str[51]&&str[51]<='9')        a=str[51]-'0';    else if('a'<=str[51]&&str[51]<='z')        a=str[51]-'a'+10;    else        a=str[51]-'A'+10;    if('0'<=str[52]&&str[52]<='9')        b=str[52]-'0';    else if('a'<=str[52]&&str[52]<='z')        b=str[52]-'a'+10;    else        b=str[52]-'A'+10;    temp2=a*16+b;         if('0'<=str[54]&&str[54]<='9')        a=str[54]-'0';    else if('a'<=str[54]&&str[54]<='z')        a=str[54]-'a'+10;    else        a=str[54]-'A'+10;    if('0'<=str[55]&&str[55]<='9')        b=str[55]-'0';    else if('a'<=str[55]&&str[55]<='z')        b=str[55]-'a'+10;    else        b=str[55]-'A'+10;    temp3=a*16+b;         if('0'<=str[57]&&str[57]<='9')        a=str[57]-'0';    else if('a'<=str[57]&&str[57]<='z')        a=str[57]-'a'+10;    else        a=str[57]-'A'+10;    if('0'<=str[58]&&str[58]<='9')        b=str[58]-'0';    else if('a'<=str[58]&&str[58]<='z')        b=str[58]-'a'+10;    else        b=str[58]-'A'+10;    temp4=a*16+b;    cout<<"Destination = "<<temp1<<"."<<temp2<<"."<<temp3<<"."<<temp4<<endl;         //IP头的长度    int len;    if('0'<=str[1]&&str[1]<='9')        len=str[1]-'0';    else if('a'<=str[1]&&str[1]<='z')        len=str[1]-'a'+10;    else        len=str[1]-'A'+10;    len=len*4*2;//以一个符号为单位    int st=len/2*3;//st是TCP的起始地址             //源端口    int s;    if('0'<=str[st]&&str[st]<='9')        temp1=str[st]-'0';    else if('a'<=str[st]&&str[st]<='z')        temp1=str[st]-'a'+10;    else        temp1=str[st]-'A'+10;    if('0'<=str[st+1]&&str[st+1]<='9')        temp2=str[st+1]-'0';    else if('a'<=str[st+1]&&str[st+1]<='z')        temp2=str[st+1]-'a'+10;    else        temp2=str[st+1]-'A'+10;    if('0'<=str[st+3]&&str[st+3]<='9')        temp3=str[st+3]-'0';    else if('a'<=str[st+3]&&str[st+3]<='z')        temp3=str[st+3]-'a'+10;    else        temp3=str[st+3]-'A'+10;    if('0'<=str[st+4]&&str[st+4]<='9')        temp4=str[st+4]-'0';    else if('a'<=str[st+4]&&str[st+4]<='z')        temp4=str[st+4]-'a'+10;    else        temp4=str[st+4]-'A'+10;    s=temp1*4096+temp2*256+temp3*16+temp4;    cout<<"Source Port = "<<s<<endl;         //目的端口    st=st+6;    int d;    if('0'<=str[st]&&str[st]<='9')        temp1=str[st]-'0';    else if('a'<=str[st]&&str[st]<='z')        temp1=str[st]-'a'+10;    else        temp1=str[st]-'A'+10;    if('0'<=str[st+1]&&str[st+1]<='9')        temp2=str[st+1]-'0';    else if('a'<=str[st+1]&&str[st+1]<='z')        temp2=str[st+1]-'a'+10;    else        temp2=str[st+1]-'A'+10;    if('0'<=str[st+3]&&str[st+3]<='9')        temp3=str[st+3]-'0';    else if('a'<=str[st+3]&&str[st+3]<='z')        temp3=str[st+3]-'a'+10;    else        temp3=str[st+3]-'A'+10;    if('0'<=str[st+4]&&str[st+4]<='9')        temp4=str[st+4]-'0';    else if('a'<=str[st+4]&&str[st+4]<='z')        temp4=str[st+4]-'a'+10;    else        temp4=str[st+4]-'A'+10;    d=temp1*4096+temp2*256+temp3*16+temp4;    cout<<"Destination Port = "<<d<<endl;  } int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        getchar();        for(int i=1;i<=n;i++)        {            char str[1001];            gets(str);            P(str,i);            cout<<endl;        }        //cout<<endl;    }         return 0;}


0 0
原创粉丝点击