列表

详情


NC204916. 浅尝辄止

描述

给定一个正整数n,求。式子中[x]为下取整。
答案可能会很大,输出答案对998244353取模后的值。

输入描述

1<=n<=10^13

示例1

输入:

5

输出:

10

示例2

输入:

10

输出:

27

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Go(1.9.1) 解法, 执行用时: 200ms, 内存消耗: 944K, 提交时间: 2020-07-18 22:25:25

package main

/**
 * 
 * @param n long长整型 
 * @return int整型
*/
func work( n int64 ) int {
	// write code here
	var p int=998244353
	var res int=0
	r:=0
	l:=1
	nn:=int(n)
	for ;l<=nn;l=r+1{
		
		r=nn/(nn/l)
		res+= ((r-l+1)*(nn/l))
        res %=p
	}
	return res
}

Python3(3.5.2) 解法, 执行用时: 3219ms, 内存消耗: 6520K, 提交时间: 2020-07-19 18:40:33

class Solution:
    def work(self, n):
        i = n
        ans = 0
        while i > 0:
            ans += (i - n // (n // i + 1)) * (n // i)
            ans %= 998244353
            i = n // (n // i + 1)
        return ans

C++ 解法, 执行用时: 182ms, 内存消耗: 504K, 提交时间: 2021-09-26 16:45:31

class Solution {
public:
    long long mod=998244353;
    long long work(long long n) {
    long long ans=0;
	for(long long l=1,r;l<=n;l=r+1)
	{
		r=n/(n/l);
		ans=(ans+(n/l)*(r-l+1))%mod;
	}
	return ans;
    }
};

C 解法, 执行用时: 180ms, 内存消耗: 512K, 提交时间: 2021-10-21 19:40:24

/**
 * 
 * @param n long长整型 
 * @return int整型
 */
int work(long long n ) {
    // write code here
    long long sum=0,i,t;
    for(i=1;i<=n;i=t+1) 
    {t=n/(n/i);sum+=(t-i+1)*(n/i);}
    return sum%998244353;}

上一题