唯一分解定理小练

2024-06-06 17:48
文章标签 小练 定理 分解 唯一

本文主要是介绍唯一分解定理小练,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

POJ 1845 Sumdiv

这是一道考查唯一分解定理的题目,提议是给出A和B,让你求出A^B的所有因数的和。由唯一分解定理可知。A^B=(x1^y1)*(x2^y2)*...*(xn^yn),且其中x1,x2,,,xn均为质数。这样的话因数的和就可以知道为:(1+x1+x1^2+...+x1^y1)*(1+x2+x2^2+...+x2^y2)*...*(1+xn+xn^2+xn^yn),这样的话又继续分析。发现(1+x+x^2+x^3)=(1+x)*(1+x^2);(1+x+x^2+x^3+x^4)=(1+x)*(1+x^3)+x^2;这样就可通过对奇偶进行判断递归得到相应的值了。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int ci[7100],ge[7100];
__int64 p(__int64 x,__int64 y)//求y次方
{__int64 res=1;while(y>0){if(y%2==1){res=(res*x)%9901;}x=(x*x)%9901;y/=2;}return res;
}
__int64 g(__int64 r,__int64 l)//递归求和
{if(l==0){return 1;}if(l%2==1){return ((1+p(r,l/2+1))%9901*g(r,l/2)%9901)%9901;}else{return ((1+p(r,l/2+1))%9901*g(r,l/2-1)%9901+p(r,l/2)%9901)%9901;}
}
int main()
{__int64 a,b,t,num=1;int i,j;scanf("%I64d%I64d",&a,&b);memset(ge,0,sizeof(ge));j=0;for(i=2;i*i<=a;++i)//得到次幂个数和质因数{if(a%i==0){ci[j]=i;while(a%i==0){a/=i;ge[j]++;}j++;}}if(a>1){ci[j]=a;ge[j++]=1;}for(i=0;i<j;++i){t=g(ci[i],ge[i]*b);num=(num*t)%9901;}cout<<num<<endl;return 0;
}

POJ 2262 Goldbach's Conjecture 

简单题,这题要说的不多,主要是素数判断这一块,算术基本定理,也称为素数的唯一分解定理,由此定理可以得出素数判断的循环次数。还有注意写的时候我的(int d=sqrt(x))是判CE,所以要注意细节,因为编译器可能不会判断出来。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool check(int x)
{int i,d=int(sqrt(double(x)));//注意细节for(i=2;i<=d;++i){if(x%i==0){return false;}}return true;
}
int main()
{int n,i,f;while(cin>>n){f=0;if(n==0){break;}for(i=3;i<=n/2;++i)//注意范围{if(check(i)==true&&check(n-i)==true&&i%2==1&&(n-i)%2==1)//判断是否符合条件{printf("%d = %d + %d\n",n,i,n-i);f=1;break;}}if(f==0){cout<<"Goldbach's conjecture is wrong."<<endl;}}return 0;
}


这篇关于唯一分解定理小练的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036799

相关文章

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

mysql索引二(唯一索引)

前文中介绍了MySQL中普通索引用法,和没有索引的区别。mysql索引一(普通索引) 下面学习一下唯一索引。 创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复。唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该使用关键字UNIQUE,把它定义为一个唯一索引。 添加数据库唯一索引的几种

Python分解多重列表对象,isinstance实现

“”“待打印的字符串列表:['ft','bt',['ad',['bm','dz','rc'],'mzd']]分析可知,该列表内既有字符对象,又有列表对象(Python允许列表对象不一致)现将所有字符依次打印并组成新的列表”“”a=['ft','bt',['ad',['bm','dz','rc'],'mzd']]x=[]def func(y):for i in y:if isinst

推荐算法之矩阵分解实例

矩阵分解的数据利用的上篇文章的数据,协同过滤 用到的知识 python的surprise k折交叉验证 SVD SVDpp NMF 算法与结果可视化 # 可以使用上面提到的各种推荐系统算法from surprise import SVD,SVDpp,NMFfrom surprise import Datasetfrom surprise import print_perf

前端小白指南:前端生成唯一设备标识的那些事儿

最近,我在使用javascript开发一个基于Chrome的插件,遇到了一个有意思的需求。插件需要生成一个授权码(code),但为了确保安全性,这个code必须与设备绑定,防止被不同的设备使用,限制一个code只能在一个设备上使用。这个需求带来了一个问题:我该如何在前端中获取当前设备的唯一标识呢? 解决方法 在对浏览器的限制做了进一步了解,因为涉及到用户隐私问题,因为MAC地址是一种物理

代数扩张次数关系定理

【单代数扩张同构引理】 对于单扩张 K / F \mathbb{K/F} K/F有同构 F [ a ] ≅ F [ x ] / ⟨ f ( x ) ⟩ \mathbb{F}\lbrack a\rbrack \cong \mathbb{F}\lbrack x\rbrack/\left\langle f(x) \right\rangle F[a]≅F[x]/⟨f(x)⟩,其中 a ∈ K a \i

全局唯一ID生成

全局ID生成器,是一种在分布式系统下用来生成全局唯一ID的工具需满足以下特性: 唯一性、递增性、安全性、高可用、高性能 生成在所有库或表中都满足唯一得ID 实现: 利用Redis的自增功能 INCRBY key increment (INCRBY | Docs),并在这个自增值上,拼接其它内容: ID的组成部分:符号位:1bit,永远为0 时间戳:31bit,以秒为单位,可以

数独(搜索答案不唯一,牛客上测试83%)

#include <bits/stdc++.h>using namespace std;int a[10][10];int flag=0;bool check(int n,int key){//行判断for(int i=0; i<9; i++){int j=n/9;if(a[j][i]==key)return false;}//列判断for(int i=0; i<9; i++){int

模式分解的概念(下)-无损连接分解的与保持函数依赖分解的定义和判断、损失分解

一、无损连接分解 1、定义 2、检验一个分解是否是无损连接分解的算法 输入与输出 输入: 关系模式R(U,F),F是最小函数依赖集  R上的一个分解 输出: 判断分解是否为无损连接分解 (1)建立一张k行n列的表,每行对应分解中的一个关系模式,每列对应一个属性,若属性,则在i行j列处填,否则填 (2)对形如的函数依赖,检查X属性列上值相同的行,其所对应的Y属性列上的

【PyTorch】【机器学习】图片张量、通道分解合成和裁剪

一、导入所需库 from PIL import Imageimport torchimport numpy as npimport matplotlib.pyplot as plt 二、读取图片 pic = np.array(Image.open('venice-boat.jpg')) 上述代码解释:先用Image.open()方法读取jpg格式图片,再用np.array()方法