摘要: 真蛋疼,WA了10+次,最后发现主要错在两个地方。。感觉用int超不了。。但实际上是超出int范围的。。然后扩展欧几里德照着模版抄错了。。。而且错在一个极其隐蔽的地方。。导致错的话也能出sample。思路是别人的。。。:仔细观察题目可以发现如果每一个盒子都要装满的话,则必须满足以下条件:am1+bm2=n这个式子很像那个扩展欧几里得里面的那个,于是很容易联想到ax+by=gcd(a,b)=g根绝这个方程的特点,可以判断,如果n%gcd(a,b)!=0的话,则无解(参见《数论概论》)于是联立这两个方程我们可以解出m1,m2解出来m1=nx/g m2=ny/g那么通解则应该是m1=nx/g+bt/ 阅读全文
posted @ 2011-06-07 19:54 KOKO's 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 这是又搜的一道扩展欧几里德的UVA的题,这道题看完题之后不知道怎么做,但这道题主要应该是想说明扩展欧几里德的一个性质:用扩展欧几里德解决ax+by=c;这个问题时,最后求出来的x,y有如下的性质,它是所有满足条件的解中|x|+|y|最小的,并且在|x|+|y|相同的情况下x<=y;//============================================================================// Name : 10104.cpp// Author : // Version :// Copyright : Your copyright notic 阅读全文
posted @ 2011-06-07 16:45 KOKO's 阅读(290) 评论(0) 推荐(0) 编辑
摘要: //============================================================================// Name : 620.cpp// Author : // Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include <iostrea 阅读全文
posted @ 2011-06-07 16:25 KOKO's 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 终于把这道扩展欧几里德的给做出来了。扩展欧几里德是解决ax+by=c的方程的任意一组解时用的。因为有公理:ax+by=gcd(a,b);故上述问题中求的x,y分别应该是x*(c/gcd(a,b)),y*(c/gcd(a,b));这就是一般通式的解;因此解存在的条件是c%gcd(a,b) == 0;//============================================================================// Name : 10673.cpp// Author : // Version :// Copyright : Your copyright 阅读全文
posted @ 2011-06-07 16:23 KOKO's 阅读(432) 评论(0) 推荐(0) 编辑