NPOJ 1069 小学生作业

题目大意:中文

注释代码:

/*                                                    * Problem ID : NPOJ 1069 小学生作业* Author     : Lirx.t.Una                                                    * Language   : C                                 * Run Time   : 1                                                    * Run Memory : 1092                                                  
*/ #include int
judge( int a, int b ) {//判断a和b求z//设k为一正整数,使得(a + z) / (b + z) = k//当k > 1时有z = (a - kb) / (k - 1),这是一个关于k的单调函数//要是z最大必须得k最小,因此可以从2到a / b枚举k,第一个满足//整除的k即为所求,如果一个k都没有表示不存在这样的zint		bound;//k的界限int		k;if ( a < b ) return -1;//当a < b时必定无法整除if ( !( a % b ) ) return 0;//可以直接整除的情况//!!!注意:里面包括了k = 1的情况bound = a / b + 1;//从小到大枚举kfor ( k = 2; k < bound; k++ )if ( !( ( a - k * b ) % ( k - 1 ) ) )return ( a - k * b ) / ( k - 1 );return -1;//没有找到
}int
main() {int		t;int		iscn;int		a, b;scanf("%d", &t);iscn = 0;while ( t-- ) {scanf("%d%d", &a, &b);printf("Case %d: %d\n", ++iscn, judge( a, b ));}return 0;
}
无注释代码:

#include int
judge( int a, int b ) {int		bound;int		k;if ( a < b ) return -1;if ( !( a % b ) ) return 0;bound = a / b + 1;for ( k = 2; k < bound; k++ )if ( !( ( a - k * b ) % ( k - 1 ) ) )return ( a - k * b ) / ( k - 1 );return -1;
}int
main() {int		t;int		iscn;int		a, b;scanf("%d", &t);iscn = 0;while ( t-- ) {scanf("%d%d", &a, &b);printf("Case %d: %d\n", ++iscn, judge( a, b ));}return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部