1 条题解
-
0
C :
#include<stdio.h> int main() { int sou[4],netMask[4],subNet[4],n,i; for(i=0;i<4;i++) scanf("%d%*c",&sou[i]); for(i=0;i<4;i++) { scanf("%d%*c",&netMask[i]); sou[i]&=netMask[i]; } scanf("%d",&n); while(n--) { for(i=0;i<4;i++) { scanf("%d%*c",&subNet[i]); subNet[i]&=netMask[i]; } for(i=0;i<4;i++) { if(sou[i]^subNet[i]) break; } if(i<4) puts("OUTER"); else puts("INNER"); } return 0; }
C++ :
#include<stdio.h> int main() { int sou[4],netMask[4],subNet[4],n,i; for(i=0;i<4;i++) scanf("%d%*c",&sou[i]); for(i=0;i<4;i++) { scanf("%d%*c",&netMask[i]); sou[i]&=netMask[i]; } scanf("%d",&n); while(n--) { for(i=0;i<4;i++) { scanf("%d%*c",&subNet[i]); subNet[i]&=netMask[i]; } for(i=0;i<4;i++) { if(sou[i]^subNet[i]) break; } if(i<4) puts("OUTER"); else puts("INNER"); } return 0; }
Pascal :
program p1033; type ztk=array[1..4] of longint; var n,i,s,p:longint; my,tr,zi:ztk; x,o,d,che:string; procedure calm(a,b:ztk;q:longint); var i,k:longint; c,c1,d1,d2:string; begin d1:='';d2:='';d:=''; for i:=1 to 4 do begin k:=a[i]; c1:=''; repeat str(k mod 2,c); c1:=c+c1; k:=k div 2; until k=0; while length(c1)<8 do c1:='0'+c1; d1:=d1+c1+'.'; end; for i:=1 to 4 do begin k:=b[i]; c1:=''; repeat str(k mod 2,c); c1:=c+c1; k:=k div 2; until k=0; while length(c1)<8 do c1:='0'+c1; d2:=d2+c1+'.'; end; for i:=1 to 36 do if (d1[i]='.') and (d2[i]='.') then d:=d+'.' else if (d1[i]='0') or (d2[i]='0') then d:=d+'0' else d:=d+'1'; if q=1 then che:=d; end; begin readln(x); x:=x+'.';s:=0; repeat inc(s); p:=pos('.',x); val(copy(x,1,p-1),my[s]); delete(x,1,p); until x=''; readln(x); x:=x+'.';s:=0; repeat inc(s); p:=pos('.',x); val(copy(x,1,p-1),zi[s]); delete(x,1,p); until x=''; calm(my,zi,1); readln(n); for i:=1 to n do begin readln(o); o:=o+'.';s:=0; repeat inc(s); p:=pos('.',o); val(copy(o,1,p-1),tr[s]); delete(o,1,p); until o=''; calm(tr,zi,0); if che=d then writeln('INNER') else writeln('OUTER'); end; end .
Java :
import java.util.Scanner; public class Main { public static int doAnd(int ip, int net){ return ip & net; } public static void main(String[] args) { Scanner in = new Scanner(System.in); String locIp = in.nextLine(); String[] locIptem = locIp.split("\\."); int[] locIps = new int[4]; for(int i=0;i<4;i++)locIps[i] = Integer.parseInt(locIptem[i]); String sub = in.nextLine(); String[] subtem = sub.split("\\."); int[] subs = new int[4]; for(int i=0;i<4;i++)subs[i] = Integer.parseInt(subtem[i]); int[] and = new int[4]; for(int i=0;i<4;i++)and[i] = locIps[i]&subs[i]; int n = Integer.parseInt(in.nextLine()); String[] ss = new String[n]; for(int i=0;i<n;i++){ ss[i] = in.nextLine(); String[] iptem = ss[i].split("\\."); int[] ips = new int[4]; for(int j=0;j<4;j++)ips[j] = Integer.parseInt(iptem[j]); int[] andtem = new int[4]; for(int j=0;j<4;j++)andtem[j] = ips[j]&subs[j]; boolean out = true; for(int j=0;j<4;j++){ if(and[j] != andtem[j]){ out = false; break; } } if(out)System.out.println("INNER"); else System.out.println("OUTER"); } } }
Python :
import sys dataip,datama = [],[] l = 1 for line in sys.stdin: a = line.split()[0] if l == 1: dataip.append(a) elif l==2: datama.append(a) elif a.find('.')!=-1: dataip.append(a) l += 1 datama=map(lambda x:x.split('.'),datama) dataip=map(lambda x:x.split('.'),dataip) new = [] for i in xrange(len(dataip)): b = [] for j in [0,1,2,3]: a = int(dataip[i][j])&int(datama[0][j]) b.append(a) new.append('.'.join([str(k) for k in b])) for i in xrange(1,len(new)): if new[i]==new[0]: print 'INNER' else: print 'OUTER'
- 1
信息
- ID
- 1410
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者