博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pku1365 Prime Land (数论,合数分解模板)
阅读量:5139 次
发布时间:2019-06-13

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

题意:给你一个个数对a, b 表示ab这样的每个数相乘的一个数n,求n-1的质数因子并且每个指数因子k所对应的次数 h.

先把合数分解模板乖乖放上:

for (int i = 2; ans != 1; ++i)        {            if (ans%i == 0)            {                num[cnt] = i;    int k = 0;                while (ans%i == 0){ ++k; ans /= i; }                index[cnt++] = k;            }            if (i > 10000)break;        }        if (ans != 1){ num[cnt] = ans; index[cnt++] = 1; }

然后,我自己写了个快速幂

快速幂的模板:

ll pow(ll a, ll n){    ll res;    for (res = 1; n;a=a*a, n>>=1)    if (n & 1) res = res*a;    return res;}

AC代码:

#include
#include
#define ll long longint num[1000];int index[1000];ll pow(ll a, ll n){ ll res; for (res = 1; n;a=a*a, n>>=1) if (n & 1) res = res*a; return res;}int main(){ while (1){ ll a, b, ans = 1; while (scanf("%lld", &a), a!=0){ scanf("%lld", &b); ans *= pow(a, b); char nn=getchar(); if (nn == '\n')break; } if (a == 0)break; ans--; int cnt = 0; for (int i = 2; ans != 1; ++i) { if (ans%i == 0) { num[cnt] = i; int k = 0; while (ans%i == 0){ ++k; ans /= i; } index[cnt++] = k; } if (i > 10000)break; } if (ans != 1){ num[cnt] = ans; index[cnt++] = 1; } for (int i = cnt-1; i >= 0; --i) printf("%d %d%c", num[i], index[i], " \n"[i == 0]); }}

 

转载于:https://www.cnblogs.com/ALINGMAOMAO/p/9653049.html

你可能感兴趣的文章
浅谈卷积神经网络及matlab实现
查看>>
解决ajax请求cors跨域问题
查看>>
【123】
查看>>
《收获,不止Oracle》pdf
查看>>
LinkedList<E>源码分析
查看>>
Real-Time Rendering 笔记
查看>>
如何理解HTML结构的语义化
查看>>
Activity之间的跳转:
查看>>
软件是天时、地利、人和的产物!
查看>>
实验四2
查看>>
Android现学现用第十一天
查看>>
Bin Packing 装箱问题——NPH问题的暴力枚举 状压DP
查看>>
多路复用
查看>>
python 列表
查看>>
Python数据可视化之Pygal(雷达图)
查看>>
当前主流读取Excel技术对比
查看>>
Java学习笔记--字符串和文件IO
查看>>
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
SQL语法(3)
查看>>
在js在添版本号
查看>>