Codeforces Round #332 (Div. 2) D. Spongebob and Squares 数学题枚举
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<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std; struct node
{
long long x,y;
};
bool cmp(node a,node b)
{
return a.y>b.y;
}
vector<node> ans1;
int main()
{
long long x;cin>>x;
for(long long i = ;i<=10000000LL||i*i*i<=x;i++)
{
long long a = (i*i+i-(i+)*i/2LL);
long long b = (i*i+i-(i+)*i*i/2LL-(i+)*i+(i*(i+)*(*i+)/));
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=;i<ans1.size();i++)
{
printf("%lld %lld\n",ans1[i].x,ans1[i].y);
}
}
代码
Codeforces Round #332 (Div. 2) D. Spongebob and Squares 数学题枚举的更多相关文章
- Codeforces Round #332 (Div. 2) D. Spongebob and Squares(枚举)
		http://codeforces.com/problemset/problem/599/D 题意:给出一个数x,问你有多少个n*m的网格中有x个正方形,输出n和m的值. 思路: 易得公式为:$\su ... 
- Codeforces Round #332 (Div. 2)D. Spongebob and Squares  数学
		D. Spongebob and Squares Spongebob is already tired trying to reason his weird actions and calcula ... 
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke 水题
		B. Spongebob and Joke Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/599 ... 
- Codeforces Round #332 (Div. 二) B. Spongebob and Joke
		Description While Patrick was gone shopping, Spongebob decided to play a little trick on his friend. ... 
- Codeforces Round #332 (Div. 2)_B. Spongebob and Joke
		B. Spongebob and Joke time limit per test 2 seconds memory limit per test 256 megabytes input standa ... 
- Codeforces Round #332 (Div. 2)B. Spongebob and Joke
		B. Spongebob and Joke time limit per test 2 seconds memory limit per test 256 megabytes input standa ... 
- Codeforces Round #332 (Div. 2) B. Spongebob and Joke  模拟
		B. Spongebob and Joke While Patrick was gone shopping, Spongebob decided to play a little trick ... 
- codeforces #332 div 2 D. Spongebob and Squares
		http://codeforces.com/contest/599/problem/D 题意:给出总的方格数x,问有多少种不同尺寸的矩形满足题意,输出方案数和长宽(3,5和5,3算两种) 思路:比赛的 ... 
- Codeforces Round #332 (Div. 2)
		水 A - Patrick and Shopping #include <bits/stdc++.h> using namespace std; int main(void) { int ... 
随机推荐
- 【Unity3D】Unity自带组件—完成第一人称人物控制
			1.导入unity自带的Character Controllers包 2.可以看到First Person Controller组件的构成 Mouse Look() : 随鼠标的移动而使所属物体发生旋 ... 
- js获取客户端IP及地理位置
			php获取方法: 1.<?php 2.function get_ip_place(){ 3.$ip=file_get_contents("http://fw.qq.com/ipaddr ... 
- Delphi 2010 安装及调试
			呵呵,毫不客气地说,Delphi 2010 这个版本可以算是 Delphi 的一个“里程碑”,为什么这么说?因为这个版本实现了几个 Delphi 应该有却一直没有的功能 Delphi 2010 的新功 ... 
- HDU 5389  Zero Escape
			题意:有一些人,每人拿一个号码,有两个门,门的值分别为A和B,要求把人分成两堆(可以为空)一堆人手持号码之和的数字根若等于A或者B就可以进入A门或者B门,要求两堆人分别进入不同的门,求有几种分配方式, ... 
- Chrome的网络调试
			F12 然后 
- SSH无法连接服务器
			服务器版本如下: @kelWEB4:/etc# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd ... 
- FindBugs Bug Descriptions
			FindBugs Bug Descriptions ◇例1: Integer a = ; String str ="; System.out.println(str == a.toStrin ... 
- SRM 514 DIV1 500pt(DP)
			题目简述 给定一个H×W大小的矩阵,每个格子要么是1~9中的一个数,要么是".",要求你把“.”填成具体的数字(1~9),并且符合以下两个要求: 对于所有的整数r 和 c( 0 & ... 
- Makefile中用宏定义进行条件编译
			在源代码里面如果这样是定义的: #ifdef MACRONAME //可选代码 #endif 那在makefile里面 gcc -D MACRONAME=MACRODEF 或者 gcc ... 
- Makefile 知识点
			$@ $@ is the name of the target. $? The $? macro stores the list of dependents more recent than the ... 
