CodeVS 1083 Cantor表__Codevs

來源:互聯網
上載者:User
1083 Cantor表

1999年NOIP全國聯賽普及組 時間限制: 1 s 空間限制: 128000 KB 題目等級 : 白銀 Silver 題目描述 Description

現代數學的著名證明之一是Georg Cantor證明了有理數是可枚舉的。他是用下面這一張表來證明這一命題的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … … 我們以Z字形給上表的每一項編號。第一項是1/1,然後是1/2,2/1,3/1,2/2,… 輸入描述 Input Description

整數N(1≤N≤10000000) 輸出描述 Output Description

表中的第N項 範例輸入 Sample Input

7 範例輸出 Sample Output

1/4 資料範圍及提示 Data Size & Hint

見描述


#include<iostream>#include<cstdio>#include<cmath>using namespace std;long long n;int erfen(){int left=1,right=1500;int mid;while(left+1<right){mid=left+(right-left)/2;long long ans=(mid*mid-mid)/2+1;if(ans>n)right=mid;else if(ans==n)return mid;else left=mid;}return left;}int main(){scanf("%d",&n);int num=erfen();if(!(num%2)){int k=n-(num*num-num)/2;printf("%d/%d",k,num+1-k);}else{int k=n-((num*num-num))/2;printf("%d/%d",num+1-k,k);}return 0;}

將這個東西順時針旋轉一下成三角形,第n行最左邊數位編號n*(n-1)/2+1。奇數行從左往右數,偶數行從右往左走。


根據上述小學奧數推論寫程式即可。仍有疑惑請下方評論,每周三下午||周日晚上||大休||節假日回覆。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.