1 条题解

  • 0
    @ 2024-12-24 9:54:35

    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;
    }
    

    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");
    		}
    		
    	}
    
    }
    
    
    • 1

    信息

    ID
    1326
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者