下午整理的 素数打表 大数与整型相乘 求余模板

质数乘积 -LintCode 给定一个无重复的质数数组arr,每个质数最多使用一次,求所有无重复的乘积并从小到大排序。 注意事项 2 <= |arr| <= 9 2 <= arr[i] <= 23 样例 给出 arr = [2,3], 返回 [6]。 解释: 2*3=6。 给出 arr = [2,3,5], 返回 [6,10,15,30]。 解释: 2*3=6, 2*5=10,... 阅读详情
#include <cstdio>
#include <cstring>

int p[101];
void getPrim(int N){  // 打素数表的模板。
    int i, j;       // 素数最大小于N
    memset(p, -1, sizeof (p));
    for(i=2; i*i<=N; i++) {
        if(p[i]) {
            for(j=i*2; j<=N; j+=i)
                p[j] = 0;
        }
    }
    p[0] = 0;
    for(i=2; i<=N; i++) //1不是素数
        if(p[i]) p[++p[0]] = i; //p[0] 为素数个数
}

void initNum(char *str, int *num) {
    int i, k;   //字符转换为4位数存入num 数组
    num[0] = 1; //保存数组中有几位4位数字
    num[1] = 0;
    for(k=1,i=strlen(str)-1; i>=0; i--,k*=10) {
        if(k == 10000){
            k = 1;
            num[0]++;
            num[num[0]] = 0;
        }
        num[num[0]] += (str[i]-'0') * k;
    }
}
void Mul(int *num, int bit) {

    int i=1;
    __int64 tmp=0;
    for (i=1; i<=num[0]; i++) {
        tmp += 1ll*num[i] * bit;
        num[i] = tmp%10000;
        tmp /= 10000;
    }
    while(tmp) {
        num[++num[0]] = tmp%10000;
        tmp /= 10000;
    }
    return;
}
void printNum(int *num) {
    //大数输出
    printf("%d", num[num[0]]);  //第一位先输出
    for (int i=num[0]-1; i>=1; i--)
        printf("%04d", num[i]); //四位输出不足补零
    printf("\n");
}

int Mod(int *num, int mod) {
    int ans = 0;
    for (int i=num[0]; i>=1; i--)
        ans = (1ll*ans*10000+num[i]) % mod;
    return ans;
}

int main() {
    int i;

    //得到小于等于100的素数,并输出
    getPrim(100);
    for (i=1; i<=p[0]; i++)
        printf("%d\n", p[i]);

    //大数与整型数相乘,并输出结果
    int num[100], k;
    char str[100];
    scanf("%s%d", str, &k);
    initNum(str, num);
    Mul(num, k);
    printNum(num);

    //大数与整型取余并输出结果
    scanf("%s%d", str, &k);
    initNum(str, num);
    printf("%d\n", Mod(num, k));

    return 0;
}

收藏于 2011-10-19
来自于百度空间

多重背包问题的二进制分解思想 /** 在这之前,我空间好像转过一个背包九讲,现在我就只对 01背包和多重背包有点印象了 先说下 01 背包,有n 种不同的物品,每个物品有两个属性 size 体积,value 价值,现在给一个容量为 w 的背包,问 最多可带走多少价值的物品。 int f[w+1]; //f[x] 表示背包容量为x 时的最大价值 for (int i 阅读详情

相关推荐

bellman 算法

/** bellman算法可用来求单源最短路和判断是否有负权回路 复杂度O(VE) V:图中点的个数 E:图中边的个数 后面还会介绍spfa 算法和bellman 功能相同但要快很多 bellman算法是单源最短路中最简单的一个算法,虽然复杂度较高,但易于编写 通常用于快速刷水题…… 下面只说bellman 算法的用法, 以后也是噢 */

zcube的技术博客 1521

99乘法表 100内所有的质数

99乘法表 100内所有的质数 /* 九九乘法表 */ class NineNineTable { public static void main(String [] args) { for (int i = 1;i<=9 ;i++ ) { for (int j = 1;j <= i ;j++ ) { System.out.print(i + "*" + j + " = " + (i*j) + " " ); } System.out.println.

LeungKiChen 471

局部路径规划算法 - B样条曲线(B-spline Curves)

本文详解了B样条以及代码实现

BigDavid123的博客 6508

前n个素数的乘积表

1, 2, 6, 30, 210, 2310, 30030, 510510, 9699690, 223092870, 6469693230, 200560490130, 7420738134810, 304250263527210, 13082761331670030, 614889782588491410

ACM之路 1693

vmware虚机Debian10磁盘空间无损扩容

该方法不适和LVM的磁盘管理 备份 一定要先做备份,虚机中直接创建一个快照备份 vm上增加空间 初始给的40G空间不够需要扩容,vm那给系统添加到100G 重新分区 查看当前分区情况 sudo fdisk -l

lms99251的博客 7455

关于Arduino中的常用函数

一、I/O函数 二、时间函数 三、数学函数 abs 返回其参数的无符号值 【abs(12)返回12,abs(-12)也返回12】 constrain 限制一个数字以阻止它超出范围。第一个参数是被限制的数字,第二个参数是范围区间的开始,第三个参数是允许的数字范围区间的结尾。 【constrain(8,1,10)返回8,constrain(11,1,10)返回10,constrain(0,1,10)返回1】 map 将一个范围内的数字映射到另一个范围。第一个参数是要映射到数字,第二个和第三个参数是from范围(

TREE的博客 7323

素数打表(4种方法)

1既不是素数也不是合数 打表:是一种典型的用空间换时间的做法,一般指将所有可能需要用到的结果事先计算出来,这样以后后面需要用到时就可以直接查表获得。 在什么情况下我们需要打表? (1)在程序中一次性计算出所有需要用到的结果,之后查询直接取这些结果。 举个例子,假如我们算Fibonacci数中的F(n)我们假如需要算很多次Q次 比如:(10^6),每次我们都是从头开始算的,对于Q次查询就会产...

Harington的博客 7924

GEO优化实战:用AnswerBit量化AI搜索可见度与品牌监控体系

生成式引擎优化(GEO)正取代传统SEO,成为品牌在AI搜索生态中获取可见度的关键。当用户习惯从“翻列表”转向“直接问AI”,品牌能否被生成式引擎识别、引用并正向推荐,直接决定了其在用户决策链条中的存在感。AI搜索可见度因此从模糊概念演变为可度量的运营指标,涵盖提及率、引文率、情感分与回源质量等维度。腾讯AnswerBit作为答案侧分析工具,帮助运营者拆解AI回复中的品牌语境与引用来源,让优化动作有据可循。从内容结构化改造、品牌实体建设到第三方权威背书,GEO要求团队建立“度量-优化-再度量”的闭环。文章结

weixin_31100517的博客 153

质数乘积(大数乘法+埃氏筛法)

质数乘积 题目描述 TWQ每天疯狂的刷题,今天又刷到一道水题,于是赶紧来拿一血吧,给你一个正整数n,求小于n的数中所有质数的乘积,输入有多组测试用例,0为结束标志,所有质数的乘积初始值为0。 输入 正整数n(n<=10000) 输出 小于n的质数的乘积。 样例输入 5 0 样例输出 6 提示 大数乘法 #include<stdio.h> #include<math.h> int a[1000000]; int main() { int i,j,f=0,k,l1,l2,x

准备23考研。不定期更新考研知识 1415

避坑指南:C#用S7NetPlus读写西门子PLC字符串(String/WString)的完整方案

本文详细解析了C#通过S7NetPlus读写西门子PLC字符串(String/WString)的完整方案,包括内存布局、编码差异和字节序处理等关键技术细节。提供了实战优化的代码示例和常见问题排查指南,帮助开发者避免乱码、截断等常见陷阱,提升工业自动化项目的开发效率。

weixin_32956805的博客 322

STM32 移植LwIP 实现网线插拔自动恢复

STM32 移植LwIP 之后,能正常联网通讯,但是发现2个问题, 1、上电初始化前,未插入网线,之后就无法获取到IP地址(DHCP) 2、正常通讯过程中,拔掉网线,然后插回去,不知道如何复位 先看一下LWIP初始化代码 /** * LwIP initialization function */ int MX_LWIP_Init() { /* Initilialize the LwIP stack with RTOS */ tcpip_init( NULL, NULL );

tiantangmoke的博客 8074

算法设计——质数的乘积

问题描述 输入N行数据,分别输出这些数据(大于5)的最大的三个质数乘积 代码实现 #include&lt;iostream&gt; using namespace std; int main() { int N, n, num; int i, j; while (cin &gt;&gt; N&amp;&amp;N &gt; 0) { for (n = 0; n &lt; N...

DedicationTechnology 1万+

Python量化交易入门:天勤量化TqSdk保姆级教程(含避坑指南)

本文提供Python量化交易入门指南,重点介绍天勤量化TqSdk的使用方法,包括环境配置、核心API实战、策略开发技巧及实盘部署。教程涵盖中国期货市场,帮助个人投资者快速掌握量化交易技术,避开常见陷阱。

weixin_29065791的博客 836

lintcode---质数乘积

题目描述: 给定一个无重复的质数数组arr,每个质数最多使用一次,求所有无重复的乘积并从小到大排序。 注意事项: 2 &lt;= |arr| &lt;= 9 2 &lt;= arr[i] &lt;= 23 样例: 给出 arr = [2,3], 返回 [6]。 解释: 2*3=6。 给出 arr = [2,3,5], 返回 [6,10,15,30]。 解释: 2*3=6, 2...

一直在路上的羊的博客 1068

6.5 构网型储能系统的协同控制策略

本文系统阐述了构网型储能系统的协同控制策略,重点分析了多机组群协同运行面临的功率分配不均、动态响应失配等挑战。研究提出了改进型下垂控制与虚拟阻抗法、基于一致性算法的分布式协同控制等解决方案,探讨了构网型储能与同步发电机在惯性响应、一次调频等方面的协同机制,以及与跟网型电源在电压支撑、阻抗重塑等方面的互补作用。文章构建了分层控制架构,为实现多类型电源的全局优化运行提供了技术路径,对提升高比例新能源电力系统的稳定性具有重要意义。

技术工作者 1004

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

高效素数打表模板

#include #include #include #include #include using namespace std; #define N 100000 int h=0; bool p[N]; int prime[N]; void db() { memset(p,true,sizeof(p)); for(int i=2;i<N;i++) { if(p[i]==true)

sinat_35121480的博客 1521

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Help Hanzo 素数打表进阶(大数据区间打表)

题意:求a~b之间的素数;(1 难点:数据太大,素数打表会TLE,枚举会MLE; 解题关键:b-a 方法:素数打表小部分(1e6),然后用已打表素数去拓展所给区间的素数,用v[j-a](a #include #include #include #include using namespace std; typedef long long ll; const int N=1e6+5; int

Big_Rui的博客 729

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

素数高效打表法

主要原理还是因为一个素数的倍数一定就不是素数了,所以break是最快速的方法了。   /* 遇到素数需要打表时,先估算素数的个数: num = n / lnx; num为大概数字,越大误差越小(只是估计,用于估算素数表数组大小) 这个打表法效率貌似很高,网上说几乎达到了线性时间(不知道是真是假=。=) */ #include #include #include #include #incl

风华绝代 5047

用Tarjan算法求无向连通图割点&&割边

/** 割点割边挺好理解的,割点就是一个无向连通图,把其中一个点 挖掉剩下的图不连通,割边就是把一条边砍掉不连通 比如:有一个通信网络,要求一颗炸弹,把这个通信网络搞得不连通,问 炸哪个点或哪条边。 Tarjan 算法实现求割边和割点很类似,不过还是有点不同,复杂度为O(N+M) 下面用 存边写下 */ //求割点 #include b

zcube的技术博客 3482

floyed 算法

/** floyed 是用动态规划解决完全最短路的算法,一次调用即可得到任意两个点间的最短路径 复杂度为O(n^3),适用于稠密图,顶点数一般在100 以内适用 结构简单,易于编写 floyed算法还可解决传递闭包,判断图是否为连通图 在解题时候一般不会只考 floyed 而是利用floyed 得到的结果,进行下一步解题 就像二分算法一样,提一

zcube的技术博客 3448

最小费用最大流 spfa() + ek()

/** 一个多月没碰,感觉忘完了…… 最小费就是有多条路可以满足最大流量的情况下所需要的最小费用 把费用改成相反数或改下spfa()的松弛就可最大费了 比如:从北京到上海运送一批货物,给出中间经过每条路线上对每辆车的收费,以及 每条路一次允许经过的车的数量,求一次性从北京到上海送尽可能多的货物情况下的最 小费用,当然中间经过的路线用二维数组即可表

zcube的技术博客 3420

模拟退火算法解决最近最远问题

/** 模拟退火算法真的很巧妙,而且很多问题也能转换成这个算法 这个算法最大的妙处,就是它会无序的向着你所要求的答案去 寻找,直到找到符合你的精度,概率很高 如:在一个1024*768的平面上有N 个点,现在要你在这个面上找个 点到这N个点的距离和最小,精度保留 5 位小数,有个很简单的办法 就是枚举,当然不能这么干,而模拟退火算法是处理这类问题的

zcube的技术博客 2788

单源最短路 dijkstra + heap 实现

/** 再写一篇睡觉,正好把刚刚的优先队列用下。。 前面再说单源最短路径的时候用到dijkstra 算法,现在介绍下 它的优化版,传说中的 O(N*log(E)) 废话不多说,还是那句话:模板都会用,关键在转换 */ struct { int v, w, next; }edge[2*eMax]; // 无向边 int edgeHead[nMax],

zcube的技术博客 2590

SPFA 算法

/** SPFA: Shortest Path Faster Algorithm 看到名字不禁为之一颤,SPFA算法是西南交通大学段凡丁于1994年发表的。 SPFA 也是竞赛中最常见的算法之一,不仅仅用来解决带负权的单源最短路 而且是求解差分约束问题的专用算法,也常用它和最大流合作解决最小费问题 可以说SPFA 是 dijkstra 和 bellman 的

zcube的技术博客 1551

二分算法总结

二分算法由于其复杂度为O(logN),在实际运算中具有极高的效率。二分算法思想还经常结合其它算法被应用在解决实际项目问题中。例如,对非线性方程求根。二分算法的思想简单,但编写正确却并不容易。编写二分算法的错误,往往不是因为疏忽错误,而是因为该算法过于灵活却暗藏杀机。轻则程序崩溃,机器停止;重则可能引起致命的损失。下面先给出错误程序,及样例分析。错误1:int bsearch(int *a, int

zcube的技术博客 1468
上一篇: bellman 算法
下一篇: dijkstra 算法
zcube
博客等级 码龄17年 170粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值