HZNU短学期题解 2023-09-06

1.简单排序

t=eval(input())
for o in range(t):
    n=eval(input())
    str=list(map(int,input().split()))
    str.sort()
    if str[4]<=300:
        print("Penta Kill")
    else:
        print("Shut Down")

2.floyd模版题

while True:
    try:
        ans = 2 ** 128
        n,m=map(int,input().split())
        idx=0
        max
        d=[[i for i in range(100)]for i in range(100)]
        for i in range(1,n+1):
            for j in range(1,n+1):
                if i==j:
                    d[i][j]=0
                else:
                    d[i][j]=0x3f3f3f3f
        for i in range(m):
            a,b,l=map(int,input().split())
            d[a][b]=d[b][a]=min(d[a][b],l)
        def floyd():
            for k in range(1,n+1):
                for i in range(1,n+1):
                    for j in range(1,n+1):
                        d[i][j]=min(d[i][j],d[i][k]+d[k][j])
        floyd()
        st,ed=map(int,input().split())
        if d[st][ed]>0x3f3f3f3f/2:
            print("No path")
        else:
            print(d[st][ed])
    except:
        break

3.记得倒序输出

#include<stdio.h> 
int main() 
{ 
    int a[100][100]; 
    int n; 
    int i,j,k; 
    while(~scanf("%d",&n)) 
    { 
        for(i=1;i<=n;++i) 
        a[i][1]=a[i][i]=1; 
        for(i=3;i<=n;++i) 
        { 
            for(j=2;j<=i;++j) 
            { 
                a[i][j]=a[i-1][j]+a[i-1][j-1]; 
            } 
        } 
        for(i=n;i>=1;--i) 
        { 
            if(i!=n) 
            { 
                for(k=1;k<=n-i;++k) 
                    printf(" "); 
            } 
            for(j=1;j<i;++j) 
            { 
                printf("%d ",a[i][j]);                               
            } 
            printf("%d\n",a[i][j]); 
        } 
        printf("\n"); 
    } 
    return 0; 
} 

4.

while True:
    try:
        n,m=map(int,input().split())
        a=[i for i in range(1000)]
        for i in range(1,n+1):
            a[i]=i
        x=0
        i=1
        y=1
        while x!=n-1:
            if i==m:
                while a[y]==0:
                    y+=1
                    if y==n+1:
                        y=1
                a[y]=0
                x+=1
                i=0
            i+=1
            y+=1
            if y==n+1:
                y=1
            if a[y]==0:
                while a[y]==0:
                    y+=1
                    if y==n+1:
                        y=1
        print(a[y])
    except:
        break

5.模拟一下就好了,不算难

#include <stdio.h>
int arr[1001];
int main()
{
int n;
int yunda=0,sf=0,st=0,yuantong=0,ems=0,baishi=0,qita=0;
int zt=0;
int i;
scanf("%d",&n);
int a,b,c;
for(i=0;i<n;i++)
{
scanf("%d-%d-%d",&a,&b,&c);
if (n==1)
{
a /=10;
}
if (a>=1 && a<=25)
{
yunda++;
}
if(a>=26 && a<=55)
{
yuantong++;
}
if(a>=56 && a<=69)
{
ems++;
}
if(a>=70 && a<=103)
{
baishi++;
}
if (a>=104 && a<=125)
{
sf++;
}
if (a>=200 && a<=230)
{
st++;
}
if(a>=231 && a<=250)
{
zt++;
}
if (a>125 && a<200)
{
qita++;
}
if(a>250 && a<=300)
{
qita+=1;
}
}
printf("%d %d %d %d %d %d %d %d",yunda,yuantong,ems,baishi,sf,st,zt,qita);
return 0;
}

6.考察十进制二进制的转换,py有内置函数bin可以直接转二进制,c++要自己写函数

'''
a=bin(168)
b=bin(0)
a=a[2:]
print(a)
b=b[2:]
while len(b)<8:
    b='0'+b
print(b)
'''
benjiip=list(map(int,input().split('.')))
s1=[]
for x in benjiip:
    x=bin(x)
    x=x[2:]
    while len(x)<8:
        x='0'+x
    s1.append(x)
yanma=list(map(int,input().split('.')))
s2=[]
for x in yanma:
    x=bin(x)
    x=x[2:]
    while len(x)<8:
        x='0'+x
    s2.append(x)
ans=[]
for i in range(4):
    s=""
    for j in range(8):
        if s2[i][j]=='1' and s1[i][j]=='1':
            s+='1'
        else:
            s+='0'
    ans.append(s)
n=eval(input())
for i in range(n):
    ip=list(map(int,input().split('.')))
    st=[]
    for x in ip:
        x = bin(x)
        x = x[2:]
        while len(x) < 8:
            x = '0' + x
        st.append(x)
    res=[]
    for i in range(4):
        s = ""
        for j in range(8):
            if s2[i][j] == '1' and st[i][j] == '1':
                s += '1'
            else:
                s += '0'
        res.append(s)
    successful=True
    for p in range(4):
        if ans[p]!=res[p]:
            successful=False
            break
    if successful:
        print("INNER")
    else:
        print("OUTER")

祝大家早日AC~

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值