1 35 79 11 图片贴不上每个数字就是一个格子
246 81012
请问从一个格子 a 爬到一个格子 b 一共有多少种可行的路线。
#include <stdio.h>
void main( )
{
int i
double a,b,n,un1,un2,un
scanf("%lf %lf",&a,&b)
n=b-a+1
if(n==1)printf ("0\n")
un = un2 = 1
if(n==2)
un=1
for ( i=3i<=ni++)
{
un1 = un2
un2 = un
un = un1 + un2
}
printf ("%.0f\n",un)
}
是不是这个
#include"stdio.h"#include"string.h"
main()
{
int c,d,i,n,k,up=0
char static a[30]={1},b[30]={2},road[30]={0}
scanf("%d %d",&c,&d)
n=d-c+1
if(n==2)
{
printf("1\n")
}
else
{
if(n==3)
{
printf("2\n")
}
else
{
for(i=2i<(n-1)i++)//非前两种情况的连加
{
for(k=0k<30k++)//每一位分别相加
{
road[k]=a[k]+b[k]+up
if(road[k]>9)//若相加大于九则进位
{
road[k]=road[k]%10
up=1
}
else up=0
}
strcpy(a,b)
strcpy(b,road)
}
for(i=29i--)
{
if(road[i]==0) continue//从后往前找到结果中从第几位开始不是零
else break
}
for(i>=0i--)//反序输出结果
printf("%d",road[i])
printf("\n") //这里应该用%d吧?
}
}
}
估计是 结果溢出,你把 变量 类型改成 无符号数 试试如果不行 把结果定义成 double,最后输出时 以 %.0f 输出
如果还不行 用下面注释里面的代码。__int64是c++ 里面提供的变量类型(64位),表示数据范围要大很多,看你们 评测系统 支不支持了
再不行 就要用高精度了,就是用数组存放 最后结果,估计 就剩2个点不至于用到这个
#include "stdio.h"
/*main( )
{
__int64 a,b,n,i,un1,un2,un
scanf("%I64d %I64d",&a,&b)
n=b-a+1
if(n==1)
printf ("0\n")
un = un2 = 1
for ( i=3i<=ni++)
{
un1 = un2un2 = unun = un1 + un2
}
printf ("%I64d\n",un)
} */
main( )
{
unsigned long a,b,n,i,un1,un2,un
scanf("%u %u",&a,&b)
n=b-a+1
if(n==1)
printf ("0\n")
un = un2 = 1
for ( i=3i<=ni++)
{
un1 = un2un2 = unun = un1 + un2
}
printf ("%u\n",un)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)