Codeforces Round #332 (Div. 2)D. Spongebob and Squares
来源:互联网 发布:淘宝店铺pc端装修视频 编辑:程序博客网 时间:2024/06/05 19:06
Spongebob is already tired trying to reason his weird actions and calculations, so he simply asked you to find all pairs of n and m, such that there are exactly x distinct squares in the table consisting of n rows and m columns. For example, in a 3 × 5 table there are 15squares with side one, 8 squares with side two and 3 squares with side three. The total number of distinct squares in a 3 × 5 table is15 + 8 + 3 = 26.
The first line of the input contains a single integer x (1 ≤ x ≤ 1018) — the number of squares inside the tables Spongebob is interested in.
First print a single integer k — the number of tables with exactly x distinct squares inside.
Then print k pairs of integers describing the tables. Print the pairs in the order of increasing n, and in case of equality — in the order of increasing m.
26
61 262 93 55 39 226 1
2
21 22 1
8
41 82 33 28 1
In a 1 × 2 table there are 2 1 × 1 squares. So, 2 distinct squares in total.
In a 2 × 3 table there are 6 1 × 1 squares and 2 2 × 2 squares. That is equal to 8 squares in total.
题意:给出一个整数N问有多少个n*m的格子内的正方形格子的数目等于N并输出这n*m个格子一个n*m的格子中设n为较小的一个则有这n*m的格子中正方形的数目为
n*m+(n-1)*(m-1)*...1*(m-n+1);即为n*n*m+n*(n-1)*n/2-n*(n-1)*m+1^2+2^2+....(n-1)^2;因此枚举n求出m即可。
/* ***********************************************Author : rycCreated Time : 2016-08-23 TuesdayFile Name : E:\acm\codeforces\332D.cppLanguage : c++Copyright 2016 ryc All Rights Reserved************************************************ */#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#include<list>#include<vector>#include<list>#include<queue>#include<map>#include<set>using namespace std;typedef long long LL;typedef pair<LL,LL>pll;const int maxn=1000010;set<pll>ans;set<pll>::iterator it;int main(){ LL n,sum=0;cin>>n; ans.insert(make_pair(1,n)); ans.insert(make_pair(n,1)); for(LL i=2ll;i<=n;++i){ sum=sum+(i-1)*(i-1); if(sum>n)break; LL num=i*(i*(i-1)/2ll); if((n-sum+num)%((i*i+i)/2ll))continue; if(n-sum+num<0)break; if(i>((n-sum+num)/((i*i+i)/2ll)))break; ans.insert(make_pair(i,(n-sum+num)/((i*i+i)/2ll))); ans.insert(make_pair((n-sum+num)/((i*i+i)/2ll),i)); } printf("%d\n",ans.size()); for(it=ans.begin();it!=ans.end();++it){ printf("%lld %lld\n",(*it).first,(*it).second); } return 0;}
- Codeforces Round #332 (Div. 2) D. Spongebob and Squares详解
- Codeforces Round #332 (Div. 2) D. Spongebob and Squares
- Codeforces Round #332 (Div. 2)-D. Spongebob and Squares
- Codeforces Round #332 (Div. 2)D. Spongebob and Squares
- Codeforces Round #332 (Div. 2)D. Spongebob and Squares(数学方程,暴力)
- Codeforces Round #332 (Div. 2) 599D Spongebob and Squares(数学)
- Codeforces Round #332 (Div. 2) D. Spongebob and Squares 公式推导
- Codeforces Round #332 (Div. 2)-D Spongebob and Squares(枚举+递推)
- 【Codeforces Round 332 (Div 2)D】【数学 公式推导】Spongebob and Squares 正方形数量恰好为x个的所有大矩形
- Codeforces Round #332 (Div. 2)_B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke
- Codeforces #332 D. Spongebob and Squares (公式)
- Codeforces 599D:Spongebob and Squares
- Codeforces 599 D Spongebob and Squares
- DeepLearning4J入门——使用LSTM进行大盘回归
- 旅行(最短路)
- 关于oracle with as用法
- C++学习笔记之——map set 与 opencv中的数据结构 如 point 等不兼容
- & |运算小记
- Codeforces Round #332 (Div. 2)D. Spongebob and Squares
- 美团笔试题(JavaScript)
- java虚拟机垃圾回收
- lightoj-1008 - Fibsieve`s Fantabulous Birthday【思维】【找规律】
- Android学习笔记--3.Intent的使用
- java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoa
- Lightoj 1138 ( Trailing Zeroes (III))
- JavaEE完整技术体系文章陆续上映!!!
- Qt 延时