http://oj.acm-icpc.top/
a题:三个数字排序
可以利用sort函数排序,或者自己想清楚逻辑自己写,我给出一个正确逻辑
(拓展冒泡和其他排序参考https://blog.csdn.net/hebtu666/article/details/81434236)
a,b,c=input().split(" ")
a,b,c=int(a),int(b),int(c)
if a>b:a,b=b,a
if b>c:b,c=c,b
if a>b:a,b=b,a
print(a,b,c)
b题:判断三角形能否组成
很简单,直接判断即可
while 1:
a,b,c=[int(x) for x in input().split()]
if a==0:
break
elif a+b>c and a+c>b and b+c>a:
print('Great,you are genius!')
else:
print('oh,my god!')
c题:把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出。
利用循环,加上步长,一次性输出。
或者两个循环,不加步长,判断一下再输出即可。
time=int(input())
while 1:
a=int(input())
for i in range(1,a+1,2):
print(i,end=" ")
print("")
for j in range(2,a+1,2):
print(j,end=" ")
print("")
time=time-1
if time==0:
break
d题:已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出“No answer”(不要引号)。
t=int(input())
while t:
n,m=input().split()
if int(m)%2==0:
a=(int(m)-int(n)*2)/2
b=int(n)-a
if a>=0 and b>=0:
print(int(b),int(a))
else:
print('No answer')
t=t-1
e题:简化版:::找出从自然数1-6中任取3个数的所有组合。
for a in range(6,0,-1):
for b in range(6,0,-1):
for c in range(6,0,-1):
if a>b>c:
print(str(a)+str(b)+str(c))
任取n个数:
#include
int a[15];
int n,r;
void dfs(int c,int x){
int i;
if(x==r+1){
for(int j=1;j<=r;j++)
printf("%d",a[j]);
printf("\n");
}
for(i=c;i>0;i--){
a[x]=i;
dfs(i-1,x+1);
}
}
int main(){
while(scanf("%d%d",&n,&r)==2){
dfs(n,1);
}
return 0;
}
f题:编写一个程序实现将字符串中的所有"you"替换成"we"
利用函数:
while 1:
a=str(input())
print(a.replace("you", "we"))
或遍历、判断、替换。
G题:
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
杨辉三角,就是按照定义来模拟即可。
这里给出python的一点比较神的列表操作
列表生成式知识请看我的python总结里有。
利用定义简单明了的生成每一行杨辉:
for i in range(1,n):
l=[1]+[int(l[j])+int(l[j+1]) for j in range(len(l)-1)]+[1]