Python 练习实例82 Python 100例
题目:八进制转换为十进制
程序代码:
s=int(raw_input('number:'))
n=len(str(s))
m=0
for i in range(0,n):
k=s%10
s=s/10
m=m+k*pow(8,i)
print m
Python 练习实例83 Python 100例
题目:求0—7所能组成的奇数个数。
程序分析:
组成1位数是4个。
组成2位数是7*4个。
组成3位数是7*8*4个。
组成4位数是7*8*8*4个。
程序代码:
sum=4
s=4
for j in range(2,9):
print sum
if j<=2:
s*=7
else:
s*=8
sum+=s
print 'sum = %d' % sum
题目描述
有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?
输入描述:
每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能力值 ai(-50 <= ai <= 50)。接下来的一行包含两个整数,k 和 d (1 <= k <= 10, 1 <= d <= 50)。
输出描述:
输出一行表示最大的乘积。
示例1
输入
3
7 4 7
2 50
输出
49
程序代码:(正确率百分之四十)
#include<stdio.h>
int main()
{
int i,j=0,k,d,n,m,max,t=0,sum=1;
int a[50]={0},b[10]={0},c[10]={0};
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d%d",&k,&d);
for(i=0;i<n;i++)
{
max=-10000;
for(j=0;j<n;j++)
{
if(a[j]>max)
{
max=a[j];
m=j;
}
}
b[i]=max;
c[i]=m;
a[m]=-10000;
//printf("%d,",b[i]);
//printf("%d\n",c[i]);
}
for(i=0;i<n;i++)
{
if(c[i]>c[i+1])
{
if(c[i]-c[i+1]>d)
{
if(b[i]>b[i+1])
{
b[i+1]=-10000;
}
else
{
b[i]=-10000;
}
}
}
else
{
if(c[i+1]-c[i]>d)
{
if(b[i]>b[i+1])
{
b[i+1]=-10000;
}
else
{
b[i]=-10000;
}
}
}
}
for(i=0;i<n;i++)
{
if (b[i]!=-10000)
{
sum=sum*b[i];
t=t+1;
//printf("%d\n",b[i]);
}
if (t==k)
{
break;
}
}printf("%d\n",sum);
}
题目描述 见005 (牛客网)
Fibonacci数列是这样定义的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
输入描述:
输入为一个正整数N(1 ≤ N ≤ 1,000,000)
输出描述:
输出一个最小的步数变为Fibonacci数"
示例1
输入
15
输出
2
程序代码:
#include <stdio.h>
int main()
{
int a,b,c,n;
scanf("%d",&n);
a=0;
b=1;
while(1)
{
c=a+b;
a=b;
b=c;
if(n<c)
{
break;
}
}
if((b-n)<(n-a))
{
printf("%d\n",b-n);
}
else
{
printf("%d\n",n-a);
}
}