Python语言ACM模式的输入输出格式(转载)

0 前言

因为最近需要使用ACM模式进行笔试,就转载了几篇讲ACM模式下输入输出格式的文章,希望对大家也有帮助。

1 代码

# encoding: utf-8  
  
''''' 
Created on Nov 6th, 2014 
 
@author: Speedcell 
'''  
  
'''''Python的输入是野生字符串,所以要自己转类型 
strip去掉左右两端的空白符,返回str 
slipt把字符串按空白符拆开,返回[str] 
map把list里面的值映射到指定类型,返回[type] 
 
EOF用抓异常 
 
print后面加逗号就不会换行,否则反之,当然3.x君自行传参 
 
题目细节没看太细,可能有的地方不对,不要在意这些细节啦 
 
これは以上です'''  
  
# 有多组输入数据,但没有具体的告诉你有多少组,只是让你对应每组输入,应该怎样输出。  
  
while True:  
    try:  
        a, b = map(int, raw_input().strip().split())  
        print a + b,  
    except EOFError:  
        break  
      
# 输入一个整数,告诉我们接下来有多少组数据,然后在输入每组数据的具体值。  
  
tcase = int(raw_input().strip())  
for case in range(tcase):  
    a, b = map(int, raw_input().strip().split())  
    print a + b,  
      
# 有多组输入数据,没有具体的告诉你有多少组,但是题目却告诉你遇见什么结束  
  
while True:  
    a, b = map(int, raw_input().strip().split())  
    if a == 0 and b == 0:  
        break  
    print a + b,  
      
# 输入有多组,并却题目告诉你每组输入遇见什么结束,与第三种不同之处在于,每组输入都有相应的细化。  
      
tcase = int(raw_input().strip())  
for case in range(tcase):  
    a, b = map(int, raw_input().strip().split())  
    if a == 0 and b == 0:  
        break  
    print a + b,  
      
# 这次的输入实现输入一个整数,告诉我们有多少行,在输入每一行。对于每一行的输入,有划分为第一个数和其他的数,第一个数代表那一组数据一共有多少输入。  
  
tcase = int(raw_input().strip())  
for case in range(tcase):  
    data = map(int, raw_input().strip().split())  
    n, array = data[0], data[1:]  
      
    sum = 0  
    for i in range(n):  
        sum += array[i]  
    print sum,  
      
# 有多种输入数据,对于每组输入数据的第一个数代表该组数据接下来要输入数据量  
  
while True:  
    try:  
        data = map(int, raw_input().strip().split())  
        n, array = data[0], data[1:]  
              
        sum = 0  
        for i in range(n):  
            sum += array[i]  
        print sum,  
    except EOFError:  
        raise  
      
# 这道题的输出只是简单的在每组输出后边多加一个换行而已!  
  
while True:  
    try:  
        a, b = map(int, raw_input().strip().split())  
        print a + b  
    except EOFError:  
        break  
      
# 这种类型的输出注意的就是换行,这类题目说在输出样例中,每组样例之间有什么什么,
# 所以我们在对应输出的同时要判断一下是否是最后一组输出,如果不是,就 将题目所说的东西输出(一般是换行或空格),如果是,就直接结束。  
  
while True:  
    data = raw_input().strip()  
    if data.isspace():  
        break  
    else:  
        data = map(int, data)  
        n, array = data[0], data[1:]  
                  
        sum = 0  
        for i in range(n):  
            sum += array[i]  
        print sum,  

第一种多组输入模板格式:

while True:
    try:
        #caption = list(map(int, input().split()))
        #ans = 0
        #for i in caption:
        #    ans += i
        #print(ans)
    except EOFError:
        break

第一种模板适合那些没有告诉有多少组数据,只是让你不断地输入,典型的题型如A+B问题。

第二种有限输入模板格式:

T = int(input())
for case in range(T):
    #caption = list(map(int, input().split()))
    #ans = 0
    #for i in caption:
    #    ans += i
    #print(ans)

第二种模板格式适合题目要求首先输入一个整数,代表有几组输入,然后再输入每组数据的具体值。


原文1链接:https://blog.csdn.net/qq_41940950/article/details/80776612
原文2链接:https://blog.csdn.net/lt17307402811/article/details/77184179

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1 图论 3 1.1 术语 3 1.2 独立集、覆盖集、支配集之间关系 3 1.3 DFS 4 1.3.1 割顶 6 1.3.2 桥 7 1.3.3 强连通分量 7 1.4 最小点基 7 1.5 拓扑排序 7 1.6 欧拉路 8 1.7 哈密顿路(正确?) 9 1.8 Bellman-ford 9 1.9 差分约束系统(用bellman-ford解) 10 1.10 dag最短路径 10 1.11 二分图匹配 11 1.11.1 匈牙利算法 11 1.11.2 KM算法 12 1.12 网络流 15 1.12.1 最大流 15 1.12.2 上下界的网络的最大流 17 1.12.3 上下界的网络的最小流 17 1.12.4 最小费用最大流 18 1.12.5 上下界的网络的最小费用最小流 21 2 数论 21 2.1 最大公约数gcd 21 2.2 最小公倍数lcm 22 2.3 快速幂取模B^LmodP(O(logb)) 22 2.4 Fermat小定理 22 2.5 Rabin-Miller伪素数测试 22 2.6 Pollard-rho 22 2.7 扩展欧几里德算法extended-gcd 24 2.8 欧拉定理 24 2.9 线性同余方程ax≡b(mod n) 24 2.10 中国剩余定理 25 2.11 Discrete Logging(BL == N (mod P)) 26 2.12 N!最后一个不为0的数字 27 2.13 2^14以内的素数 27 3 数据结构 31 3.1 堆(最小堆) 31 3.1.1 删除最小值元素: 31 3.1.2 插入元素和向上调整: 32 3.1.3 堆的建立 32 3.2 并查集 32 3.3 树状数组 33 3.3.1 LOWBIT 33 3.3.2 修改a[p] 33 3.3.3 前缀和A[1]+…+A[p] 34 3.3.4 一个二维树状数组的程序 34 3.4 线段树 35 3.5 字符串 38 3.5.1 字符串哈希 38 3.5.2 KMP算法 40 4 计算几何 41 4.1 直线交点 41 4.2 判断线段相交 41 4.3 三点外接圆圆心 42 4.4 判断点在多边形内 43 4.5 两圆交面积 43 4.6 最小包围圆 44 4.7 经纬度坐标 46 4.8 凸包 46 5 Problem 48 5.1 RMQ-LCA 48 5.1.1 Range Minimum Query(RMQ) 49 5.1.2 Lowest Common Ancestor (LCA) 53 5.1.3 Reduction from LCA to RMQ 56 5.1.4 From RMQ to LCA 57 5.1.5 An algorithm for the restricted RMQ 60 5.1.6 An AC programme 61 5.2 最长公共子序列LCS 64 5.3 最长上升子序列/最长不下降子序列(LIS) 65 5.3.1 O(n^2) 65 5.3.2 O(nlogn) 66 5.4 Joseph问题 67 5.5 0/1背包问题 68 6 组合数学相关 69 6.1 The Number of the Same BST 69 6.2 排列生成 71 6.3 逆序 72 6.3.1 归并排序求逆序 72 7 数值分析 72 7.1 二分法 72 7.2 迭代法(x=f(x)) 73 7.3 牛顿迭代 74 7.4 数值积分 74 7.5 高斯消元 75 8 其它 77

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值