好久没刷题,水一水,反正排不上名次。。这道题记下

我想着蛋疼的做了质因数分解,然后再算的因子个数。。慢的一比,结果导致超时,还不如直接一个for循环搞定。。也是醉了

最后其实就是算两个数的gcd,然后gcd的因子个数除两个数的因子个数乘积就是最后结果,再约分一下就行。

#1284 : 机会渺茫

时间限制:
5000ms
单点时限:
1000ms
内存限制:
256MB

描述

小Hi最近在追求一名学数学的女生小Z。小Z其实是想拒绝他的,但是找不到好的说辞,于是提出了这样的要求:对于给定的两个正整数N和M,小Hi随机选取一个N的约数N',小Z随机选取一个M的约数M',如果N'和M'相等,她就答应小Hi。

小Z让小Hi去编写这个随机程序,到时候她review过没有问题了就可以抽签了。但是小Hi���着写着,却越来越觉得机会渺茫。那么问题来了,小Hi能够追到小Z的几率是多少呢?

输入

每个输入文件仅包含单组测试数据。

每组测试数据的第一行为两个正整数N和M,意义如前文所述。

对于40%的数据,满足1<=N,M<=106

对于100%的数据,满足1<=N,M<=1012

输出

对于每组测试数据,输出两个互质的正整数A和B(以A分之B表示小Hi能够追到小Z的几率)。

样例输入

3 2

样例输出

4 1

#include <iostream>
#include <vector>
#include <algorithm>
#include<map>
#define N 100000
using namespace std;
typedef long long ll;
int plist[100000], pcount = 0;
int prime(int n) {
int i;
if ((n != 2 && !(n % 2)) || (n != 3 && !(n % 3)) || (n != 5 && !(n % 5)) || (n != 7 && !(n % 7)))
return 0;</span><span style="color:#333333;">
for (i = 0; plist[i] * plist[i] <= n; i++)
if (!(n%plist[i]))
return 0;
return n>1;
}
void initprime() {
int i;
for (plist[pcount++] = 2, i = 3; i<100000; i++)
if (prime(i))
plist[pcount++] = i;
}
void factor(int a, map<int,int> &s) {//质因数分解
int i = 2;
while(a>1) {
if (prime(i) && a%i == 0) {
s[i] = 0;
while (a%i == 0) {
++s[i];
a /= i;
}
}
i++;
}
}
ll cal(ll x) {
ll i, ans = 0;
for (i = 1; i * i <= x; i++) {
if (x % i == 0) ans += 2;
}
if ((i - 1) * (i - 1) == x) ans -= 1;
return ans;
}
int min(int a, int b) {
return a < b ? a : b;
}
ll gcd(ll a, ll b)
{
ll t = a%b;
while (t) {
a = b;
b = t;
t = a%b;
}
return b;
}
int main()
{
ll a, b;
cin >> a >> b;
ll s1,s2,s3,tmp;
tmp = gcd(a,b);
s1 = cal(a);
s2 = cal(b);
s3 = cal(tmp);
//几率为(s3)/(s1*s2)
ll m1,m2,m3;
m1 = s3;
m2 = s2*s1;
m3 = gcd(m1,m2);//约分
m1 = m1/m3;
m2 = m2/m3; cout << m2 <<" "<<m1<<endl;
return 0;
}

hihocoder offer收割赛。。#1284的更多相关文章

  1. CCCC 以及 hihocoder offer收割赛11 ~~~

    CCCC  真的很蒙  ,没有队服,没有狗牌,服务器崩溃到14:10  才开始比赛...(黑人问号 开始前,发现旁边是西交老大吴航,mad~各种紧张.看着大佬疯狂的敲宏定义就很怕啊.100多行,一行头 ...

  2. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  3. hihocoder编程收割赛20

    hihocoder编程收割赛20 hihocoder1542 : 无根数变有根树 hihocoder1542 思路: 树的遍历 ac代码: // hihocompete20_01.cpp : 定义控制 ...

  4. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  5. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

  6. hihocoder offer收割编程练习赛8 C 数组分拆

    思路:(引自bfsoyc的回答:http://hihocoder.com/discuss/question/4160) 动态规划.状态dp[i]表示 前i个数的合法的方案数,转移是 dp[i] = s ...

  7. hihocoder [Offer收割]编程练习赛18 C 最美和弦(dp)

    题目链接:http://hihocoder.com/problemset/problem/1532 题解:一道基础的dp,设dp[i][j][k][l]表示处理到第几个数,当前是哪个和弦错了几次初始x ...

  8. hihoCoder [Offer收割]编程练习赛3 D子矩阵求和

    子矩阵求和 http://hihocoder.com/discuss/question/3005 声明一下: n是和x一起的,m是和y一起的 x是横着的,y是纵着的,x往右为正,y往下为正 (非常反常 ...

  9. hihocoder [Offer收割]编程练习赛52 D 部门聚会

    看了题目的讨论才会做的 首先一点,算每条边(u, v)对于n*(n+1)/2种[l, r]组合的贡献 正着算不如反着算 哪些[l, r]的组合没有包含这条边(u, v)呢 这个很好算 只需要统计u这半 ...

  10. hihocoder [Offer收割]编程练习赛14

    A.小Hi和小Ho的礼物 谜之第1题,明明是第1题AC率比C还要低.题目是求在n个不同重量袋子选4袋,2袋给A,2袋给B,使2人获得重量相同,求问方案数. 我也是一脸懵b...o(n2)暴力枚举发现把 ...

随机推荐

  1. 越小越好: Q8-Chat,在英特尔至强 CPU 上体验高效的生成式 AI

    大语言模型 (LLM) 正在席卷整个机器学习世界.得益于其 transformer 架构,LLM 拥有从大量非结构化数据 (如文本.图像.视频或音频) 中学习的不可思议的能力.它们在 多种任务类型 上 ...

  2. 【python基础】变量

    1.初识变量 编程本质就是通过一定的规则,去操纵数据,变量作为数据的载体,在程序中经常会被用到.与变量相联系的还有一个名词叫数据类型,我们可以举一个生活中的例子,来理解数据类型-变量-数据三者之间的关 ...

  3. 代码随想录算法训练营Day12 栈与队列

    代码随想录算法训练营 代码随想录算法训练营Day12 栈与队列| 239. 滑动窗口最大值  347.前 K 个高频元素  总结 239. 滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的 ...

  4. rest-framework 视图类源码分析

    从miminx 类开始,依次有子类RetrieveModelMixin(单个get 请求)) ,ListModelMixin(LIST请求),CreateModelMixin(POST请求),Upda ...

  5. 在C++中,传值还是传引用?

    情况一:需要修改原对象 需要修改原对象的情况,必须要传引用.这种情况没什么要说的. 情况二:不需要修改原对象 对于内置类型(整数.浮点数.字符类型等),传值效率更高.主要有三点原因: 内存开销更小.由 ...

  6. Linux 调用约定

      函数调用约定是对函数调用时如何传递参数的一种约定.关于它的约定有许多种,下面我们分 别从内核接口和用户接口两方面介绍32位和64位Linux的调用约定. 一.内核接口   x86-32系统调用约定 ...

  7. Linux服务器设置虚拟内存

    cd /usrsudo mkdir swapcd swapsudo dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=4096du -sh /usr/ ...

  8. 一个支持WinForms换肤的开源组件

    推荐一个一键换肤的WinForms皮肤组件. 项目简介 这是一个支持自定义WinForms窗口.控件颜色.禁用状态.动画效果的皮肤组件. 支持的组件有:多选框.分割线.按钮.文本框.单选按钮.输入框. ...

  9. Java输出100以内的所有质数

    代码如下: public static void main(String[] args) { for(int k=2;k<=100;k++) { boolean flag = true; for ...

  10. 为什么从 MVC 到 DDD,架构的本质是什么?

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 本文来自于小傅哥新编写的<Java简明教程>系列内容,本教程意在于通过简单.明了. ...