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所能組成的奇數(shù)個數(shù)。
程序分析:
組成1位數(shù)是4個。
組成2位數(shù)是7*4個兰怠。
組成3位數(shù)是7*8*4個颅筋。
組成4位數(shù)是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 個測試用例性誉。每個測試數(shù)據(jù)的第一行包含一個整數(shù) n (1 <= n <= 50)窿吩,表示學生的個數(shù),接下來的一行错览,包含 n 個整數(shù)纫雁,按順序表示每個學生的能力值 ai(-50 <= ai <= 50)。接下來的一行包含兩個整數(shù)倾哺,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 (判吆#客網(wǎng))
Fibonacci數(shù)列是這樣定義的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此忌愚,F(xiàn)ibonacci數(shù)列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci數(shù)列中的數(shù)我們稱為Fibonacci數(shù)却邓。給你一個N硕糊,你想讓其變?yōu)橐粋€Fibonacci數(shù),每一步你可以把當前數(shù)字X變?yōu)閄-1或者X+1腊徙,現(xiàn)在給你一個數(shù)N求最少需要多少步可以變?yōu)镕ibonacci數(shù)简十。
輸入描述:
輸入為一個正整數(shù)N(1 ≤ N ≤ 1,000,000)
輸出描述:
輸出一個最小的步數(shù)變?yōu)镕ibonacci數(shù)"
示例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);
????}
}