Light oj 1028 - Trailing Zeroes (I)

2023-12-07 05:39
文章标签 oj 1028 light zeroes trailing

本文主要是介绍Light oj 1028 - Trailing Zeroes (I),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:Light oj 1028 - Trailing Zeroes (I)

思路:求约数个数减1


好久没做数学题了,于是TLE和WA了好几遍

= = 其实这个题3月份做的时候就TLE了。。。。。


参考的 article : Prime Factorization 


发现自己以前写的质因数分解确实写的效率不高,那篇article里面的两个idea写的很清楚,= =第一个idea就是我以前用的,虽然我在里面多加了一些判断跳出的语句,但还是TLE了。第二个idea,这次分解的判断范围缩小到sqrt(n),效率提高了不少,但是提交之后发现还是会TLE,郁闷,当时就怒了,为喵自己这么闲得蛋疼看这篇早就看过的article。。。但是。。。如果说,遇到一个质因子分解之后整个数字的范围就减小的话,那我们的范围其实也是可以减小的,所以如果我们把跳出的语句变成一个变的sqrt(tmp),tmp会根据每步分解逐步减小,这样的话效率就大大提高了。


#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdio>
using namespace std;
#define maxn 1000010
int prime[maxn];
int num[maxn];
int tmp[maxn];
int n_prime=0;
void Prime()
{memset(prime,1,sizeof(prime));prime[0]=prime[1]=0;for(int i=2;i<maxn;i++){if(prime[i]){num[++n_prime]=i;for(int j=2*i;j<maxn;j+=i)prime[j]=0;}}
}
int main()
{Prime();int t;long long n;scanf("%d",&t);for(int cases=1;cases<=t;cases++){scanf("%lld",&n);int ans=1;for(int j=1;j<=n_prime&&num[j]<=sqrt(n);j++){if(n<num[j])break;if(n%num[j]==0){int sy=1;while(n%num[j]==0){n/=num[j];sy++;}ans*=sy;}}if(n>1)ans*=2;ans--;printf("Case %d: %d\n",cases,ans);}return 0;
}



这篇关于Light oj 1028 - Trailing Zeroes (I)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Web Navigation POJ 1028 栈操作

模拟平时上网打开网页的操作,值得注意的是,如果BACK回一个网页之后进行VISIT操作,之前的网页FORWARD都回不去了 #include<cstdio>#include<cstring>#include<iostream>#include<stack>using namespace std;#define MAXD 20#define MAX_SIZE 100 + 10co

哈理工OJ 2179(深搜)

组合 Time Limit: 1000 MSMemory Limit: 32768 K Total Submit: 7(5 users)Total Accepted: 6(5 users)Rating: Special Judge: No Description 给出一个正整数N,从集合{1,2,3..N} 中找出所有大小为k的子集, 并按照字典序从小到大输出。 Input 第一行是一个整

每日OJ_牛客_求和(递归深搜)

目录 牛客_求和(递归深搜) 解析代码 牛客_求和(递归深搜) 求和_好未来笔试题_牛客网 解析代码         递归中每次累加一个新的数,如果累加和大于等于目标,结束递归。此时如果累加和正好等于目标,则打印组合。向上回退搜索其它组合。此题本身就是一个搜索的过程,找到所有的组合。 #include <iostream>#include <cmath>#in

OJ-0905

题目 示例1: 输入:10 10 56 34 99 1 87 8 99 3 255 6 99 5 255 4 99 7 255 2 99 9 255 213 4输出:99 示例2: 输入:10 10 255 34 0 1 255 8 0 3 255 6 0 5 255 4 0 7 255 2 0 9 255 213 5输出:255 import java.util.

[LeetCode] 283. Move Zeroes

题:https://leetcode.com/problems/move-zeroes/submissions/1 题目 Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements. Ex

[LeetCode] 474. Ones and Zeroes

题:https://leetcode.com/problems/ones-and-zeroes/description/ 题目 In the computer world, use restricted resource you have to generate maximum benefit is what we always want to pursue. For now, suppos

关于No resource found that matches the given name 'Theme.AppCompat.Light' No resource found that ma

关于No resource found that matches the given name  'Theme.AppCompat.Light' No resource found that matches the given name   'android:Widget.Material.ActionButton.CloseMode'. 我的上一遍文章 http://blog.csdn.net

每日OJ_牛客_Emacs计算器(逆波兰表达式)

目录 牛客_Emacs计算器(逆波兰表达式) 解析代码 牛客_Emacs计算器(逆波兰表达式) Emacs计算器__牛客网 解析代码 逆波兰表达式(后缀表达式)求值,需要借助栈,思路: 循环输入,获取逆波兰表达式,然后进行以下补助,直到测试完所有的测试用例: 遇到数字字符串,将该数字字符串转化为数字然后入栈。遇到操作符时,从栈顶取两个数字,然后进行该运算符所对应运算

西北工业大学oj题-兔子生崽

题目描述: 兔子生崽问题。假设一对小兔的成熟期是一个月,即一个月可长成成兔,每对成兔每个月可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,一年以后可有多少对兔子? 这道题目一眼看过去就是典型的递归问题,代码如下 public class RabbitReproduction {public static void main(String[] args) {in

★ 算法OJ题 ★ 力扣209 - 长度最小的子数组

Ciallo~(∠・ω< )⌒☆ ~ 今天,简将和大家一起做一道滑动窗口算法题--长度最小的子数组~ 目录 一  题目 二  算法解析 解法⼀:暴力求解 解法二:滑动窗口 三  编写算法 一  题目 209. 长度最小的子数组 - 力扣(LeetCode) 二  算法解析 解法⼀:暴力求解 算法思路: 从前往后枚举数组中的任意⼀个元素,把它当成起始位置