NYOJ 865 解题报告
来源:互联网 发布:js回调函数原理 编辑:程序博客网 时间:2024/06/05 07:20
F(x)
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
- 我们定义 F(x)是满足 x mod(a*b) == 0这样的a,b的组数。现在给你一个n,你需要求出 F(n)
- 输入
- 有多组测试数据。
每组测试数据输入一个整数n (1 <= n <= 10^11) - 输出
- 每组测试数据输出 Case x: y ,x 表示第x组测试数据,y表示F(n)的值,细节参考样例。
- 样例输入
1234
- 样例输出
Case 1: 1Case 2: 3Case 3: 3Case 4: 6
这道题又是考察乘性函数的题目。首先我们分析一下 x mod(a*b) == 0这个式子,可以发现a*b其实就是x的因子。记d为x的一个因子,那么所有d的因子拆分d=a*b的种数就是F(n)的值。写成数学式子,就是,其中是因子个数函数。数论里知道,因子个数函数是一个乘性函数,所以F也是一个乘性函数。所以,我们能推出,其中,
到此,这道题目就解决了!不过要注意当n=1时不能用上述公式计算,而是直接输出答案为1就好。
附上我的代码:
#include <stdio.h>int main(){ long long n; int case_times=1; while((scanf("%lld",&n))!=EOF) { long long sum=1; if(n>1) { long long i,temp=n,times; int flag=0; for(i=2;i*i<=temp;i++) { flag=times=0; while(n%i==0) { flag=1; times++; n/=i; } if(flag==1) sum=sum*(1+times)*(2+times)/2; } } if(n>1) sum=sum*3; printf("Case %d: %lld\n",case_times++,sum); } return 0;}
再来看看标程的:
#include <cstdio>#include <cstring>#include <string>#include <queue>#include <algorithm>#include <vector>#include <cmath>#include <iostream>#include <ctime>using namespace std;const int N = 1e2+10;const int inf = 1<<30;typedef long long LL;LL find(LL k){ LL i, j, sum = 0; for(i = 1;i * i <= k;i++) { if(k % i ==0) { sum++; if(i*i != k) sum++; } } return sum;}LL solve(LL n){ LL sum = 0; for(LL i = 1 ;i * i<= n;i++) { if(n % i == 0) { sum += find(i); LL j = n/i; if(j != i) sum += find(j); } } return sum;}int main(){ //freopen("Input.txt", "r", stdin); //freopen("Output.txt", "w", stdout); LL i, j, n, T = 1; while(~scanf("%lld", &n)) { LL sum = solve(n); printf("Case %lld: %lld\n", T++,sum); }}
1 0
- NYOJ 865 解题报告
- NYOJ解题报告~
- NYOJ 46 解题报告
- NYOJ 1 解题报告
- NYOJ 458 解题报告
- NYOJ 314 解题报告
- NYOJ 541 解题报告
- NYOJ 362 解题报告
- NYOJ 570 解题报告
- NYOJ 520 解题报告
- NYOJ 998 解题报告
- NYOJ-263解题报告
- NYOJ-833解题报告
- NYOJ 10 Skiing 解题报告
- NYOJ 448 寻找最大数 解题报告
- NYOJ 448 寻找最大数 解题报告
- NYOJ 84 阶乘的0 解题报告
- NYOJ 455题 解题报告-黑色帽子
- 文件的编码
- 整体代码缩进
- uvalive(NIM博弈)
- Android TextView 支持BBCode的显示
- WebStorm 注册码
- NYOJ 865 解题报告
- 《混合存储综述》 总结
- 可变参数函数
- DownloadManager实现文件下载
- c++ string 类的 ”数值转换“ 操作
- webStorm注册码
- Context源码解析
- 天声人語 20150726
- Hidden String