填放金币
while(1):
num = int(input())
i = 1
sum = 0
while i <= num:
sum = sum + i * i + 1
i = i + 1
print(sum)
递归求和
题目描述
使用递归编写一个程序,求:
S(n)=1-1/2+1/3-1/4+1/5-1/6+......
输入
多组数据输入,每组输入一个正整数n。
输出
输出S(n)的计算结果(精确到小数点后六位)。
样例输入 Copy
1
样例输出 Copy
1.000000
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double compute(int n)
{
double result=1;
if(n==1)
{
result=1;
}
else if(n%2==0)
{
result=(1.0/n)*(-1)+compute(n-1);
}
else
{
result=1.0/n+compute(n-1);
}
return result;
}
int main()
{
int input;
while(scanf("%d",&input)!=EOF)
{
double result=compute(input);
printf("%.6f\n",result);
}
return 0;
}
倒序输出
题目描述
使用递归编写一个程序,逆序输出一个非负整数。例如输入1234,输出4321(不含前导0)。
输入
多组输入,每组输入一个非负整数。
输出
逆序输出结果,每个结果占一行。
样例输入 Copy
12 1230 0
样例输出 Copy
21 321 0
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
int fun( int n)
{
printf("%d",n%10);
if((n/10)!=0)
{
return fun(n/10);
}
}
int f(int n)
{
int i=0;
for(;;i++)
{
n=n/10;
//要保证每个数的结尾均不为0
if(n%10!=0)
{
return n;
break;
}else
{
return f(n);
}
}
}
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==0)
{
printf("0");
}
else if(n%10==0)
{
fun(f(n));
}else
{
fun(n);
}
printf("\n");
}
return 0;
}
Kimi数列
题目描述
Kimi最近在研究一个数列: * F(0) = 7 * F(1) = 11 * F(n) = F(n-1) + F(n-2) (n≥2) Kimi称之为Kimi数列。请你帮忙确认一下数列中第n个数是否是3的倍数。
输入
输入包含多组数据。 每组数据包含一个整数n,(0≤n≤30)。
输出
对应每一组输入有一行输出。 如果F(n)是3的倍数,则输出“Yes”;否则输出“No”。
样例输入 Copy
0 1 2 3 4 5
样例输出 Copy
No No Yes No No No
def kimi(num):
if num == 0:
return 7
if num == 1:
return 11
if num > 1:
return kimi(num - 1) + kimi(num - 2)
while(1):
num = int(input())
flag = 1
if kimi(num) % 3 == 0:
print("Yes")
else:
print("No")
蜂房
题目描述
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,蜂房的结构如下所示。
输入
多组数据输入,每组数据包含两个正整数a, b,且 a<b。
输出
蜜蜂从蜂房a爬到蜂房b的可能路线数。
样例输入 Copy
1 2 3 4
样例输出 Copy
1 1
def roads(n):
if n == 1: # a、b差1
return 1
if n == 2: # a、b差2
return 2
if n > 2: # 递归
return roads(n-1)+roads(n-2)
while(1):
a, b = map(int, input().split())
n = b - a # 计算a、b之间的插值
print(roads(n))
骨牌覆盖
题目描述
用大小为1×2的骨牌铺满一个大小为2×n的长方形方格,编写一个程序,输入n,输出铺放方案总数。例如,输入n=3,即大小为2×3的方格,输出3。3种骨牌铺放方案如下图所示:
输入
多组测试用例,每一组是一个正整数。
输出
每组输出占一行。
只需要输出铺放方案总数,不需要输出具体的铺放方案。
样例输入 Copy
3
样例输出 Copy
3
def calculate(n):
if n == 1:
return 1
if n == 2:
return 2
if n > 2:
return calculate(n - 1) + calculate(n - 2)
while(1):
num = int(input())
print(calculate(num))
斐波那契数
题目描述
Kimi号称自己已经记住了前100000个斐波那契数。
为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。
当然,斐波那契数会很大。
因此,如果第n个斐波那契数不到6位,则说出该数;否则只说出最后6位(无需输出前导0)。
输入
输入有多组数据。 每组数据一行,包含一个整数n (1≤n≤100000)。
输出
对应每一组输入,输出第n个斐波那契数的最后6位。
样例输入 Copy
1 2 3 4 100000
样例输出 Copy
1 2 3 5 537501
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
int num[1000001];
int main()
{
int n;
num[0]=1;
num[1]=2;
for(int i=2;i<=100000;i++)
{
num[i]=(num[i-1]+num[i-2])%1000000;
}
while(~scanf("%d",&n))
{
printf("%d\n",num[n-1]);
}
}