zoukankan      html  css  js  c++  java
  • 解题报告 hdu3501

    题意:求一个数的自然数到它前一个数的和与比它小的数中所有与它互质的数的和的差。。。。

    比它小的与它互质的和:n*f[n] / 2 

    f[n] 为 n 的欧拉函数,怎么求见上一篇。

    多组数据,输出对一个大数取模。

    //hdu 3050
    program ACRush;
    const mm=1000000007;
    var
    v:array[0..100010]of boolean;
    i,j,k:longint;
    ans0,n,ans:int64;
    begin
    for i:=2 to 100010 do
    if not v[i] then
    begin
    j:=i;
    while j+i<=100010 do
    begin
    j:=j+i;
    v[j]:=true;
    end;
    end;

    while not eof do
    begin
    readln(n);
    if n=0 then break;
    if n=1 then
    begin
    writeln(0);
    continue;
    end;
    ans:=n;
    k:=n;
    for i:=2 to trunc(sqrt(k))+2 do
    if not v[i] then
    if n mod i=0 then
    begin
    ans:=ans div i;
    ans:=ans*(i-1);
    while n mod i=0 do n:=n div i;
    end;
    if n>1 then ans:=(ans div n)*(n-1);
    n:=k;
    ans0:=n*(n-1) div 2 - n*ans div 2;
    writeln(ans0 mod mm);
    end;
    end.

  • 相关阅读:
    linux_进程管理
    Linux-日志管理
    Httpd
    Linux-源码安装包管理
    Linux-计划任务管理
    Linux-LVM管理
    Linux-系统磁盘管理
    Linux-yum工具的使用
    Linux-rpm包管理
    Linux-网络进阶管理
  • 原文地址:https://www.cnblogs.com/SueMiller/p/2504459.html
Copyright © 2011-2022 走看看