1. 程式人生 > >北郵新OJ98

北郵新OJ98

這題其實很蛋疼,在九度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;
}


相關推薦

OJ98

這題其實很蛋疼,在九度OJ一直過不了,但是在北郵OJ相同的程式碼直接AC 主要就是考慮資料包長度不是固定的即可 當時被九度的判題整瘋了,程式碼也寫的很長很繁瑣 #include<iostream> #include<stdio.h> #includ

理 人大經驗

導師 下午 結果 初步 小時 內容 錄取 方向 區別 準備及報考個人經驗:   定好目標 詢問學長學姐 確定讀研地點 了解各個選擇的區別【學專博】 註意官網及保研論壇 多嘗試 沒有多大興趣的不要亂報 入營後聯系該地其他學校的導師見面 有機會抓住 不成功爭取9

軟院機試2018

因數 字符串 OS 長度 求一個 十進制數 img mar gpo 1.二進制數字調轉 題目描述:一個2^32的數字n,將其轉換成二進制數,再倒轉,求倒轉的二進制數對應的十進制數。 舉例:123 —— 0000 0000 0000 0000 0000 0000 0000 0

保研之路------塵埃落定(復旦,同濟,

自我介紹:本科南京郵電大學貝爾英才學院 保研院校:碩士北京郵電大學網路研究院 不知不覺已經大四了, 就在今天的下午我確認了北郵的擬錄取通知,其實我的內心還是有些失落和不甘的。看到同學有去清華,北大、浙大、同濟,覺得很羨慕。我也總結一下自己保研的一些遺憾和後悔吧。 首先:保研之前我就

803考研經驗雜談

3月31日複試終於結束了,這段備戰歷程也該告一段落了。一路上可以說坎坎坷坷,初試分不高,複試分也不高,不過最後被自己青睞的導師收了。趁著清明放假,還是想把這段經歷記錄下來。 首先說說我的背景吧!本科雙非學校,平時成績還算過得去,不過不是特別好的那種,所以沒能拿到保研名額。所以最後選擇了考研,辛苦一

2018網研機試-C

C簡單的24點 輸入為4個數字,a,b,c,d。若a^b^c^d=24,則稱該陣列滿足24點,其中^可以為+、-、*、/任一個,若不能得到結果24,則稱該陣列不滿足24點。(計算為實型) 輸入: 第一行為測試組數t 接下來t行,每一行為四個整數a,b,c,d,測試是否滿足24點 1<

2018網研機試-D

D 最大價值 對於每一個零件都有一個適宜溫度區間,[Ri,Ji],當溫度t<Ri,零件價值為x,當t>Ji,零件價值為z;當溫度適宜,價值為y。且y>x,y>z。此刻,有一恆溫箱,可確定溫度t。 輸入 第一行按順序分別為 n,x,y,z。0<n<20000

2018網研機試-B

ProblemB V字型數列,當且僅當三元組i<j<k,且 a[i]>a[j]並且a[k]>a[j],算作一個V型數列。 輸入 第一行為測試資料組數T 每組資料第一行為該陣列的數字個數 接下來一行為陣列元素 輸出: 輸出對應陣列中符合v字形數列的個數  

2018網研機試-A

Problem A 類似超市結賬,計算購買的商品的總價格。 輸入: 第一行為測試資料組數T(0<T<=10) 每組資料第一行為購買商品的種類n,接下來n行,每行兩個資料,第一個為商品價格,第二個為商品數量,價格為實型。 輸出 每一行輸出相對應資料的總價值,保留兩位小數。 &

校外控制校內PC(使用win PC/Android手機/iPad)

想幹嘛? 當然是隨時隨地 線上觀看網路高清搞比利 訪問校內PC上的資源,比如在宿舍用iPad看實驗室電腦上幾十G的藍光電影,比如在家處理一些在實驗室電腦上的檔案,比如突然放鬼畜嚇唬一下實驗室同學 ,甚至Van♂PC上的遊戲等等。好吧,我覺得最大的用處就是拯救一下

推薦個的計算機專業的自考

自考科目如下: 感興趣的,可以自己去北京教育考試院上面報名即可。需要注意的是,計算機專業自考有一定難度(好在這個專業沒有高數…),量力而行。 如果有疑問可以留言。 另外摘抄其他自考人的部分心得

推導2019803考試大綱

803計算機學科基礎綜合 一、 考查目標 計算機學科基礎綜合考試涵蓋資料結構、計算機組成原理、作業系統和計算機網路等學科專業基礎課程。要求考生比較系統地掌握上述專業基礎課程的基本概念、基本原理和基本方法,能夠綜合運用所學的基本原理和基本方法分析、判斷和解決有關理

手把手教你做作業系統小學期實驗一——Linux啟動過程優化1

1.實驗環境: 硬體:Intel i5 作業系統:Windows 8.1 虛擬機器:VMware Workstation 12.5.0 軟體:Red Hat Enterprise Linux 9 (Linux 核心 2.4.20-8) 2.

考研總結

從開始-------6月 主要是數學和英語 數學 資料:課本和課後習題全解。 要把知識點,以及課後習題過一遍。先看知識點,再做課後習題。一遍後如果覺得掌握的不好,還有時間的話可以再看一遍知識點。(我當時覺得這樣太慢,我是隻看了知識點沒做課後習題,但是一遍過後覺得好多都忘了,

著名的ACM推薦50題

POJ推薦50題 1、標記“難”和“稍難”的題目可以看看,思考一下,不做要求,當然有能力的同學可以直接切掉。 2、標記為A and B的題目是比較相似的題目,建議大家兩個一起做,可以對比總結,且二者算作一個題目。 3、列表中大約有70個題目。大家選做其中的50道,且每類題目有最低數量限制。 4、這裡不少題目在

初試+複試經驗分享

初試情況:政治--53、英語--70、數學--122、計算機綜合(803)--110一些相關的基本情況:本科專業數學、本科期間學過資料結構、通過了英語四六級、本科成績還算可以初試材料選擇(建議可以不聽):主要是數學、專業課和英語,政治可以後期準備數學:李永樂數學全書、660題

2013計算機院上機題

A 日期 Description 請你計算出第X年Y月Z日是第X年的第幾天。其中,1月1日是第一天,1月2日是第二天,以此類推。 計算時請注意閏年的影響。對於非整百年,年數能整除4是閏年,否則不是閏年;對於整百年,年數能整除400是閏年,否則不是閏年。如

python爬蟲例項—獲取教務GPA

# -*- coding: cp936 -*- #計算北郵教務GPA程式 #by JerryFang #2013.11.13 import urllib2 import re import cookielib from urllib import urlencode imp

python 登入校園網出口訪問外網

遠端機器上跑著linux , 需要在win7使用SecurityCRT遠端。 在學校內如果要訪問外網的話,需要用賬號登入才可以。 linux的文字模式下無法開啟瀏覽器,只能寫成指令碼登入了。#!/usr/bin/env python #coding=utf-8 #北郵校園網

2016計算機考研複試上機題解

今年的題的難度很低。反正是13到現在最簡單的一次了吧。 全場AK的貌似是39人。 估計是由於15年的題目出的太難,全場沒人過四題的緣故吧。。 下面是題目。 1.三元組 問題描述 給你一個長度為m的陣列(陣列元素從0到m-1),如果數組裡有a[i]+a[j]==a