【刷題小記66】分拆數

來源:互聯網
上載者:User

標籤:分數   分拆   

【轉載請註明出處】http://blog.csdn.net/mingyong_blog/article/details/39252363


描述

現在輸入一個正整數k,找到所有的正整數x>=y,使得1/k=1/x+1/y.

輸入
第一行輸入一個整數n,代表有n組測試資料。
接下來n行每行輸入一個正整數k
輸出

按順序輸出對應每行的k找到所有滿足條件1/k=1/x+1/y的組合


思路分析

關鍵是怎麼處理1/k=1/x+1/y,由於對除法不好處理,這個式子中有3個除法,所以轉化成乘法的形式處理,轉成成xy=ky+kx.

結合x>=y,易知y的最小值為k+1,根據y的值,求出x的值。x=ky/(y-k).隨著y的值不斷增大,x的值不斷減小,直到x<y時,break.


#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdlib.h>int main(){int Cases;    int k;    int y;    scanf("%d",&Cases);    while(Cases--)    {scanf("%d",&k);        for(y=k+1;;y++)        {int x=(k*y)/(y-k);            if(x<y) break;            if((x*y)==k*(x+y))printf("1/%d=1/%d+1/%d\n",k,x,y);        }    }}



【刷題小記66】分拆數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.