晨晨今天遇到一道难题,题目的意思是,从三个不同的个位数a,b,c(个位数包括0、1、2、3、4、5、6、7、8、9十个数),中任意选两个不同的数字组成两位数,可以组成多少个不同的两位数?算一算它们的和是多少?
输入一行:三个整数 a b c 0<=a,b,c<=9。
输出一行:空格分开的两个整数,代表组成多少个不同的二位数和它们的和是多少。
样例输入0 1 3
样例输出4 84
通过解析样例我们可以得知共可以组成10、13、30、31四个不同二位数,和为84
了解了其算法后便可以着手编代码了
这是一道枚举题
代码实现:
python实现:
a=list(map(int,input().split()))
t=0
for i in range(0,4):
if a[i] == 0:
break
else:
t+=t+a[i]*10*2
if i == 1:
t+=a[i+1]+a[i+2]
elif i == 2:
t+=a[i-1]+a[i-1]
else:
t+=a[i-1]+a[i-2]
print(t)
#麻烦了点
C++实现
#includeusing namespace std; int main(){ int a[4] , t ; for ( int i = 1 ; i <= 3 ; i ++ ) cin >> a[i]; if ( a[i] != 0 ) t += a[i] * 10 * 2; if ( i == 1 ) t += a[i+1] + a[i+2]; else if ( i == 2 ) t += a[i-1] + a[i-1]; else: t += a[i-1] + a[i-2]; cout << t << endl ; return 0; }
注意:此处代码并不一定对,因为是现场编写,未测试过,而且算法不一定对。用for会超时
所以在这里用一种新算法,因为只有3个数,所以可以用if else进行枚举
python实现:
a,b,c=map(int,input().split())
t=0
x=0
xx=0
if a==0 :
if b!=0 :
t+=1
x=b*10
xx+=x
if c!=0 :
t+=1
x=c*10
xx+=x
else:
if b!=0:
t+=1
x=a*10+b
xx+=x
if c!=0:
t+=1
x=a*10+c
xx+=x
if b==0 :
if a!=0 :
t+=1
x=a*10
xx+=x
if c!=0 :
t+=1
x=c*10
xx+=x
else:
if a!=0:
t+=1
x=b*10+a
xx+=x
if c!=0:
t+=1
x=b*10+c
xx+=x
if c==0 :
if b!=0 :
t+=1
x=b*10
xx+=x
if a!=0 :
t+=1
x=a*10
xx+=x
else:
if b!=0:
t+=1
x=c*10+b
xx+=x
if a!=0:
t+=1
x=c*10+a
xx+=x
print(t,end=' ')
print(xx)
C++实现:
时间紧张所以没编,请原谅


