hdu 4447 Yuanfang, What Do You Think?
思路:
这题有个结论也可以自己归纳:
对于给定的n,其约数用pi表示
T(n)=T(p1)T(p2)……T(pn)T(n')
其中T(n')是这个式子所独有的也就是
T(n')=(x^n-1)/T(p1)/T(p2)……/T(pn)
代码如下:
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#define MAX 1102
using namespace std;
struct pol
{
int bit[MAX],len;
void init(){memset(bit,,sizeof(bit));len=;}
}p[MAX];
int ans[MAX];
int com(pol a,pol b)
{
if(a.len!=b.len)return a.len-b.len;
for(int i=a.len-;i>=;i--)
if(a.bit[i]!=b.bit[i]){
if(abs(a.bit[i])!=abs(b.bit[i]))
return abs(a.bit[i])-abs(b.bit[i]);
return a.bit[i]-b.bit[i];
}
return ;
}
bool cmp(int a,int b)
{
return com(p[a],p[b])<;
}
void shows(int n)
{
if(n>) printf("x^%d",n);
else if(n==) printf("x");
}
void show(pol a)
{
int x;
printf("(");
for(int i=a.len-;i>=;i--){
if(a.bit[i]==) continue;
if(i==){
if(a.bit[i]>) printf("+%d",a.bit[i]);
else printf("%d",a.bit[i]);
continue;
}
if(i==a.len-){
if(a.bit[i]<) printf("-");
x=abs(a.bit[i]);
if(x>) printf("%d",x);
shows(i);
continue;
}
if(a.bit[i]<) printf("-");
else printf("+");
x=abs(a.bit[i]);
if(x>) printf("%d",x);
shows(i);
}
printf(")");
}
pol Div(pol a,pol b)
{
pol c;
c.init();
for(int i=a.len-;i>=;i--)
if(a.bit[i]){
c.bit[i-b.len+]=a.bit[i];
int cnt=,cur=a.bit[i];
for(int j=b.len-;j>=;j--){
a.bit[i-cnt]-=cur*b.bit[j];
cnt++;
}
}
c.len=a.len;
while(c.len>&&c.bit[c.len-]==) c.len--;
return c;
}
int main(){
p[].bit[]=-;
p[].bit[]=;
p[].len=;
for(int i=;i<MAX;i++){
p[i].init();
p[i].bit[i]=;p[i].bit[]=-;
p[i].len=i+;
p[i]=Div(p[i],p[]);
for(int j=;j*j<=i;j++){
if(i%j==){
p[i]=Div(p[i],p[j]);
if(j*j!=i) p[i]=Div(p[i],p[i/j]);
}
}
}
int n,m;
while(scanf("%d",&n)&&n){
if(n==){
puts("x-1");
continue;
}
m=;
for(int i=;i*i<=n;i++){
if(n%i==){
ans[m++]=i;
if(i*i!=n) ans[m++]=n/i;
}
}
sort(ans,ans+m,cmp);
for(int i=;i<m;i++)
show(p[ans[i]]);
printf("\n");
}
return ;
}
hdu 4447 Yuanfang, What Do You Think?的更多相关文章
- HDU P4578 Transformation
Problem Description Yuanfang is puzzled with the question below: There are n integers, a1, a2, …, an ...
- hdu 4578 线段树(标记处理)
Transformation Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others) ...
- HDU 4578 - Transformation - [加强版线段树]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578 Problem Description Yuanfang is puzzled with the ...
- HDU 4578 线段树玄学算法?
Transformation 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4578 Problem Description Yuanfang is p ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
随机推荐
- C语言 猜数游戏--产生一个随机数
#include <stdio.h> #include <time.h> #include <stdlib.h> int main(int argc, const ...
- 四位数码管SH5461AS的问题,arduino学习实测.
arduino入门教程到第16课遇到些问题.效果一直是混乱的状态. 琢磨了半天发现一些问题,和大家分享下 1)接线图,原图没有问题,只是比较含糊,线比较多不好看. 我用红色数字标示数码管的12个脚,并 ...
- <邮件服务postfix+mysql>MAIL第二篇
环境:本服务是建立在第一篇的基础之上的,最好搭建好第一篇 玩此服务的前提是你的系统装好了msql和postfix服务. Postfix+mysql主要是把邮件服务的发与mysql结合使用.当然mysq ...
- 《自动共享LDAP用户并且访问其家目录》RHEL6
实验的目的: 实现ldap服务器上的ldap用户被客户端访问,自动挂载到客户端,并且可以访问ldap用户的家目录. 服务端: 1.只需要配置文件: Iptables –F 关闭selinu ...
- VmodCAM图像采集 VGA显示
先上图 总体框图 效果图 效果不是很好,因为暂时用的是zedboard自带的VGA,其只能RGB只有3*3*3的彩色度 VmodCAM原理图 VmodCAM的zedboard管脚约束见:http:// ...
- 例题6-5 Boxes in a line uVa12657
这道题目的解决方案是双向链表,数据结构本身并不复杂,但对于四种情况的处理不够细致,主要体现在以下几点: 分类讨论不全面,没有考虑特殊情况(本身不需要操作,需要互换的两元素相邻) 没有考虑状态4改变后对 ...
- extjs的combobox的用法
可以用javascript的数组作为数据源,也可以用json作为数据源: 1.用javascript数组 var CountryCode = [ ['93','Afghanistan(93)'], [ ...
- Linq--扩展方法
如果现在有一个这样的需求,求筛选出来的大于20MB的进程的和,常用的方法是写一个静态方法传进去一个ProcessData列表 比如: public static Int64 TotalMemory( ...
- ZOJ 2314 带上下界的可行流
对于无源汇问题,方法有两种. 1 从边的角度来处理. 新建超级源汇, 对于每一条有下界的边,x->y, 建立有向边 超级源->y ,容量为x->y下界,建立有向边 x-> 超级 ...
- SQL索引优化
序言数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化.本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的降龙十八掌,希望有一天你能用 ...