因子和

因子和

Accepted : 47   Submit : 289
Time Limit : 4000 MS   Memory Limit : 65536 KB

题目描述

如果b能整除a,我们称b为a的因子。现在假设n的所有因子和为f(n);

给你两个整数a,b,(0 ≤ a ≤ b ≤ 5000000);

请你求出所有满足a ≤ i ≤ b的f(i)的和;

例如a=1,b=6,那么你就需要计算f(1)+f(2)+f(3)+f(4)+f(5)+f(6)。

我们规定f(0)=0;

输入

不超过2000个样例,每个样例占一行,为两个整数a,b;a=b=0时表示输入结束。

输出

每个样例输出一个整数,占一行。

样例输入

1 1
6 6
1 6
0 0

样例输出

1
12
33

下午做的时候,也是改的素数晒,但是改的不好,依旧超时,没想到把前面的数的因子也储存起来,只储存了自己的因子和

TLE了,看了一下,别人改的,才想明白,自己改的 的确不好

TLE代码:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#define ll __int64
using namespace std;

ll a[5000001];

int main()
{
    int n,m;
    ll int sum;
    int i=0,j=0;
    a[0] = 0;
    int e = (int)(sqrt(0.0 + 5000000)+1);
    for(i=2;i<=e;i++)
   {

      a[i*i] += i;
      for(j=i+1;i*j<=5000000;j++)
      {
          a[i*j] += i+j;
      }
   }
 while(scanf("%d%d",&n,&m)!=EOF)
 {
     if(n==0 && m== 0)
        break;
     sum = 0;
     for(int i = n;i<=m;i++) <- 这里浪费时间较多,要重新再遍历一次
     {
         sum+= a[i];
         if(i>1)
            sum += i;
     }
     if(n==0)
     cout<<sum+m-n;
     else
     cout<<sum+m-n+1;
 }
 return 0;
}

AC: 2786Ms

#include <cstdio>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cmath>
#define N 5000000
#define ll __int64
using namespace std;
ll a[N+1]={0};
int m,n;
int main()
{
    a[0]=0; a[1]=1;
    for(int i=2; i<=N; i++)
        a[i]=1+i;

    for(int i=2; i<=N; i++) //以i来暴力枚举当前数的所有可能因子
    {
        a[i] += a[i-1];
        //往后覆盖i的2倍的公差为j的元素
        for(int j=i*2; j<=N;j+=i) //<-熟悉吧 ,纯素数筛
            a[j]+=i;
    }

    while(cin>>n>>m)
    {
        if(m==0 && n==0)
            break;
        if(n==0)
            cout<<a[m]<<endl;
        else
            cout<<a[m]-a[n-1]<<endl;
    }
    return 0;
}

因子和

时间: 2024-10-17 14:28:06

因子和的相关文章

王子和公主 UVa10635

[题目描述]:王子和公主 一个王子和公主在n*n的格子中行走,这些格子是有1....n^2的编号的.现在给定p+1个数,再给定q+1个数,公主和王子可以选择其中某些格子行走,求他们最多能走几个相同的格子. [算法分析]: 这道题读题是关键,然后我们发现需要的是公共的格子,又需要是这个步数最大化,可以想到最长公共子序列的模型.序列长度小于等于62500,最长公共子序列复杂度是n^2,超时.然而可以巧妙的将LCS转化为LIS,使用nlogn的方法求解 解题思路:本题是一道经典的题目,巧妙的将LCS问

hdu 1215(因子和)

七夕节 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 40119    Accepted Submission(s): 12613 Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!"人们纷纷来到告示

求因子个数和因子和

//求因子个数 int Facnt(int n) { int res = 1; for(int i=2;i*i<=n;i++) { if(n%i == 0) { int cnt = 0; do { n /= i; cnt++; }while(n%i==0); res *= (cnt+1); } } if(n > 1) res = 2*res; return res; } //求因子和 int Facsum(int n) { int res = 1; for(int i=2;i*i<=n;

hdu1215七夕节 筛选法求公因子和

hdu1215七夕节 数据量比较大,筛选法求公因子和即可. #include <iostream> #include<cstdio> #include<string.h> #define maxn 500005 using namespace std; int ans[maxn]; int main() { int cas; int n; cin >> cas; memset(ans,0,sizeof(ans)); for(int i = 1;i <

nylg 小M的因子和

小M的因子和 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 小M在上课时有些得意忘形,老师想出道题目难住他.小M听说是求因子和,还是非常得意,但是看完题目是求A的B次方的因子和,有些手足无措了,你能解决这个问题吗? 输入 有多组测试样例每行两个数 A ,B ,(1≤A,B≤10^9)  输出 输出A的B次方的因子和,并对9901取余. 样例输入 2 3 样例输出 15 上传者 Sumdiv Time Limit: 1000MS   Memory Limit: 30

分治算法求解序列最大子和问题

特别的,当序列所有整数均为负整数时,其最大子和为0. 1 #include <stdio.h> 2 3 int caluMaxSubSum(int *array, int left, int right); 4 5 int main() 6 { 7 int array[6] = {2, -2, 3, 1, -4, 2}; 8 int len_array = sizeof(array)/sizeof(array[0]); 9 int i = 0; 10 int subsum = caluMaxS

Laplace算子和Laplacian矩阵

1 Laplace算子的物理意义 Laplace算子的定义为梯度的散度. 在Cartesian坐标系下也可表示为: 或者,它是Hessian矩阵的迹: 以热传导方程为例,因为热流与温度的梯度成正比,那么温度的梯度的散度就是热量的损失率. 由此可见,Laplace算子可用于表现由于物质分布不均引起的物质输送. 2 Laplace算子的数学意义 现在,在一维空间中简单分析上面的式子: 也可以写作: 把分子第一项和第二项分别按泰勒展开: 可以看出Laplace算子实际上是一个使函数取平均的算子.多维空

NYOJ 767 因子和

因子和 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 题目很简单明了,给你一个数n,判断它是不是素数,如果是素数就输出"Yes",如果不是素数则输出"No"和它的因子和.例如5,输出"Yes",6,输出"No  12".(不包括引号) 输入 共有t组测试数据(1<=t<=100000). 接下来有t行,每行有一个数n(1<n<=2000000). 输出 如果是素数,输出&

Solid Edge 在电子和半导体行业

solidedge在电子和半导体方面有许多的应用,具体有哪些呢? 感兴趣的朋友可以点开链接看一下哦~~~~ http://mp.weixin.qq.com/s?__biz=MjM5OTk4NDc2NQ==&mid=209824731&idx=1&sn=04a5c7aff3274cf38e2082e22d2d2587#rd 更多的精彩内容欢迎关注[solidedge联盟]微信公众号