博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #332 (Div. 2) D. Spongebob and Squares 数学题枚举
阅读量:5048 次
发布时间:2019-06-12

本文共 2256 字,大约阅读时间需要 7 分钟。

D. Spongebob and Squares

Time Limit: 20 Sec

Memory Limit: 256 MB

题目连接

http://codeforces.com/contest/599/problem/D

Description

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.

Input

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.

Output

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.

Sample Input

26

Sample Output

6 1 26 2 9 3 5 5 3 9 2 26 1

HINT

 

题意

给你x,然后让你找有多少个n*m的矩形,可以由x个相同的多边形组成

题解:

数学题,这道题实际上是问,f(n,m) = sigma(k=1,k=min(n,m))(n-k+1)*(m-k+1)=x的解有多少个

化简之后,我们可以得到f(n,m) = n^2m+n^2+n*m+n-(n+1)*n/2*(n+m+2)+n*(n+1)*(2n+1)/6

这个式子是一个关于m的一次函数,我们枚举n就好了

就可以求m了,注意break条件

#include
#include
#include
#include
using namespace std;struct node{ long long x,y;};bool cmp(node a,node b){ return a.y>b.y;}vector
ans1;int main(){ long long x;cin>>x; for(long long i = 1;i<=10000000LL||i*i*i<=x;i++) { long long a = (i*i+i-(i+1)*i/2LL); long long b = (i*i+i-(i+1)*i*i/2LL-(i+1)*i+(i*(i+1)*(2*i+1)/6)); long long y = x; long long t= (y-b)/a; if(i>t)continue; if(a*t+b==y) { if(i==t) { node k;k.x = i,k.y = t; ans1.push_back(k); } else { node k;k.x = i,k.y = t; ans1.push_back(k); k.x = t,k.y = i; ans1.push_back(k); } } } sort(ans1.begin(),ans1.end(),cmp); printf("%d\n",ans1.size()); for(int i=0;i

 

代码

 

转载于:https://www.cnblogs.com/qscqesze/p/4982853.html

你可能感兴趣的文章
编译Linux驱动程序 遇到的问题
查看>>
大型分布式网站架构技术总结
查看>>
HDU 1017[A Mathematical Curiosity]暴力,格式
查看>>
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>
Activity和Fragment生命周期对比
查看>>
OAuth和OpenID的区别
查看>>
android 分辨率自适应
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
国外媒体推荐的5款当地Passbook通行证制作工具
查看>>
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
hibernate生成表时,有的表可以生成,有的却不可以 2014-03-21 21:28 244人阅读 ...
查看>>
mysql-1045(28000)错误
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>