UVa 10976 Fractions Again?! 【暴力】【基础】

来源:互联网 发布:阿里云短信接口 php 编辑:程序博客网 时间:2024/06/05 00:44

题目链接:点击打开链接

公式挺好推的,注意一下枚举的范围即可

详见紫书183页

AC代码:

#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;int a[10005][5];int main(){    int k, ans, tem, i;    while(~scanf("%d",&k))    {        ans = 0;        memset(a, 0, sizeof(a));        for(i = k+1; i <= 2*k; ++i)        {            //cout << i << endl;            tem = k*i / (i-k);            if(tem * (i-k) == k*i)            {                //cout << tem << endl;                a[ans][0] = tem;                a[ans][1] = i;                ans++;            }        }        cout << ans << endl;        for(i = 0; i < ans; ++i)        printf("1/%d = 1/%d + 1/%d\n",k,a[i][0],a[i][1]);    }    return 0;}

紫书上也说了,枚举的范围只需在2k范围内枚举y即可。但是开始我从1枚举到2k程序一直运行不出来,想了想原来是出现了负数和分母为0的情况。所以从k+1开始枚举才是正确的。

0 0
原创粉丝点击