题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1157
input | output |
---|---|
2 3 1 |
16 |
题意:
一个年轻的瓦工,用很多瓦片拼矩形,给出M,N,K(0 < M,N,K ≤ 10000),要求出最小的瓦片数L,使L片瓦片可以拼出N种矩形,L-K片瓦片可以拼出M种矩形。
如果l小于10000,则输出l,否则输出0
样例输入:
2 3 1
样例输出:
16
样例解释:16(L)片瓦片可以拼出3种(1*16,2*8,4*4),15(L-K)片瓦片可以拼出2种(1*15,3*5)
代码如下:
#include <cstdio> #include <cmath> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int findd(int num) { if(num < 0) return -1; int cont = 0; for(int i = 1; i <= sqrt(num*1.0); i++) { if(num%i == 0) { cont++; } } return cont; } int main() { int m, n, k; while(~scanf("%d%d%d",&m,&n,&k)) { int ans = 0; for(int i = 1; i <= 10000; i++) { if(findd(i)==n && findd(i-k)==m) { ans = i; break; } } printf("%d\n",ans); } return 0; }
原文:http://blog.csdn.net/u012860063/article/details/44540883