用两个数表示其它的数

来源:百度知道 编辑:UC知道 时间:2024/07/04 06:30:28
输入两个正整数a,b,求得N,n以上的数都可以用ax+by表示.x,y为大于0的整数.
如:给你一张五块的,一张七块的,则23块以上的钱都可以用这两张钱的整数倍表示,如24 = 5*2+7*2,25 = 5*5+7*0...
参考:http://zhidao.baidu.com/question/49950651.html也是我问的问题.
x,y为不小于0整数.上面说错了.

saloyun程序正确..再给100分.求数学表达式.

百度消息已发送。拜托,回去小学一年级去进修下好不好,5 ,9是8??11你表示我看看。闷,且看看你的时间复杂度??N^2,这暂且不提,结果都不对,还好意思说我呢!!

楼上的完全是在混分!!我花了将近两个小时,才把数学规律总结出来,这是我在VC 6.0下编的程序。测试数据有(5,7);(5,9);补充,a ,b不能是整数倍关系,要不然题目就有问题了。你可以到机器上测试它的正确性。记得加分,我好辛苦的!!
#include<iostream.h>

int main()
{
int t,a0,a1,a2,b0,b1,b2,z,m[2];
int i=1;
cout<<"input the number “a” and “b”(a>b) "<<endl;
cin>>a0>>b0;
if(a0<b0){t=a0;a0=b0;b0=t;}
int c=a0-b0;
while((c*i)%(b0)!=1)i++;
z=int(c*i/b0);

a1=b0*(i+z);
b1=a0*(i);//b1-a1=1;
a2=b0*(a0-(i+z));
b2=a0*(b0-i);//a2-b2=1;
m[0]=a1,m[1]=b1;
while(m[0]>=a2||m[1]>=b1)
{
if(m[0]>=a2) m[0]=m[0]-a2,m[1]=m[1]+b2;
else m[1]=m[1]-b1,m[0]=m[0]+a1;
}
cout<<m[0]+m[1]-1<<endl;
return 0;

}

晕!!!
我用混分啊!!!!
是你编程能力不行才用那么长时间的!!!

我刚才的程序的确是错的,我看错题了,我以为a,b可以小于0.