hdu5255 魔法因子
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5255
首先先预处理出一个p,使得p*因子X等于一个整数,且p最小,设q=p*X。
则题目则可以看成存在一个r,使得p*r和q*r,数字的首位和末位交换位置,而其他位置上的数字恰好不变。
那么怎么求这个r呢,考虑到abs(q*r-p*r)=abs(q-p)*r,且abs(q*r-p*r)=X99...99Y,X+Y=9,且中间数字全是9,由于只要统计10位数以内的答案,因此去枚举这种形式的数字,且判断q*r和p*r是否可行。
读入的时候没考虑到精度问题直接*10^6导致wa了10+次,因此最好用字符串读入。
代码:
#include<cstdio>
#include<algorithm>
#include<map>
#include<cstring>
#include<vector>
#include<cmath>
#include<string>
#define N 2000010
#define M 1000
using namespace std;
double n;
long long a,b,z,pp,qq,ans[N],P,p,q,o,k,tot,i,j,l;
long long gcd(long long a,long long b)
{
if (b==) return a;
return gcd(b,a%b);
}
int check(long long p,long long q)
{
if (p==) return ;
if (p>=P) return ;
long long a,b,c=,pp;
a=p%;
pp=p;
while (pp)
{
b=pp%;
pp=pp/;
c=c*;
}
c=c/;
p=p-a+b-b*c+a*c;
if (p==q) return ;return ;
}
int main()
{
int test,ii;
P=;
P=P*;
scanf("%d",&test);
for (ii=;ii<=test;ii++)
{
tot=;
scanf("%lf",&n);
p=(n+0.0000005)*;
q=p/gcd(p,);
p=/gcd(p,);
o=abs(p-q); b=;a=;
for (k=;k<=;k++)
{
for (i=;i<=;i++)
for (j=;j<=;j++)
{
z=b*i+a*+j;
if (z%o==)
{
z=z/o;
pp=p*z;qq=q*z;
if (check(pp,qq))
{
tot++;
ans[tot]=pp;
}
}
}
a=a*+;
b=b*;
}
sort(ans+,ans++tot);
j=;ans[]=-;
for (i=;i<=tot;i++)
if (ans[i]!=ans[i-])
{
j++;ans[j]=ans[i];
}
tot=j;
printf("Case #%d:\n",ii);
printf("%I64d\n",tot);
for (i=;i<=tot-;i++)
printf("%I64d ",ans[i]);
if (tot)
printf("%I64d\n",ans[tot]);
}
}
hdu5255 魔法因子的更多相关文章
- 数学 2015百度之星初赛2 HDOJ 5255 魔法因子
题目传送门 /* 数学:不会写,学习一下这种解题方式:) 思路:设符合条件的数的最高位是h,最低位是l,中间不变的部分为mid,由题意可得到下面的公式(这里对X乘上1e6用a表示,b表示1e6) (h ...
- Java魔法类:Unsafe应用解析
本文转载自Java魔法类:Unsafe应用解析 前言 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别.不安全操作的方法,如直接访问系统内存资源.自主管理内存资源等,这些方法 ...
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低. 加载因 ...
- L1-006. 连续因子
https://www.patest.cn/contests/gplt/L1-006 题目地址 在上面 一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就 ...
- hdu1452 Happy 2004(规律+因子和+积性函数)
Happy 2004 题意:s为2004^x的因子和,求s%29. (题于文末) 知识点: 素因子分解:n = p1 ^ e1 * p2 ^ e2 *..........*pn ^ en 因子 ...
- Openjudge 1.13-21:最大质因子序列(每日两水)
总时间限制: 1000ms 内存限制: 65536kB 描述 任意输入两个正整数m, n (1 < m < n <= 5000),依次输出m到n之间每个数的最大质因子(包括m和n ...
- Java数据结构——平衡二叉树的平衡因子(转自牛客网)
若向平衡二叉树中插入一个新结点后破坏了平衡二叉树的平衡性.首先要找出插入新结点后失去平衡的最小子树根结点的指针.然后再调整这个子树中有关结点之间的链接关系,使之成为新的平衡子树.当失去平衡的最小子树被 ...
- 51Nod 1010 只包含因子2 3 5的数 Label:None
K的因子中只包含2 3 5.满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15. 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数. 例如:n = ...
- 【转】【译】JavaScript魔法揭秘--探索当前流行框架中部分功能的处理机制
推荐语: 今天推荐一篇华为同事的同事翻译的一篇文章,推荐的主要原因是作为一个华为员工居然晚上还能写文章,由不得小钗不佩服!!! 其中的jQuery.angular.react皆是十分优秀的框架,各有特 ...
随机推荐
- 在windows下创建一个Mongo服务
首先需要下载mongo的安装包 cmd.exe 这个需要用管理员权限打开 进入到mongo的安装目录 首先到C盘根据下面的命令手动创建一个 Data 文件夹 在Data 里面创建一个db文件夹一个lo ...
- Redis学习笔记(6)-SortedSet
package cn.com; import java.util.HashMap; import java.util.Map; import java.util.Set; import redis.c ...
- UDF
一:UDF 1.自定义UDF 二:UDAF 2.UDAF 3.介绍AbstractGenericUDAFResolver 4.介绍GenericUDAFEvaluator 5.程序 package o ...
- RequestContextListener有什么用
问题: java.lang.IllegalStateException: No thread-bound request found: Are you referring to request att ...
- Linux进程间通信与线程间同步详解(全面详细)
引用:http://community.csdn.net/Expert/TopicView3.asp?id=4374496linux下进程间通信的几种主要手段简介: 1. 管道(Pipe)及有名管道( ...
- ArcGIS Engine开发之旅03--ArcGIS Engine中的控件
原文:ArcGIS Engine开发之旅03--ArcGIS Engine中的控件 制图控件,如MapControl.PageLayoutControl,其中MapControl控件主要用于地理数据的 ...
- [LeetCode]题解(python):101 Symmetric tree
题目来源 https://leetcode.com/problems/symmetric-tree/ Given a binary tree, check whether it is a mirror ...
- (lleetcode)Merge Sorted Array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...
- Educational Codeforces Round 16---部分题解
710A. King Moves 给你图中一点求出它周围有几个可达的点: 除边界之外都是8个,边界处理一下即可: #include<iostream> #include<cstdio ...
- JS判断浏览器是否安装flash插件
1.直接判断是否有flash插件 var myFlash = (function(){ if(typeof window.ActiveXObject != "undefined") ...