WY31. 最大的奇约数
描述
小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11.输入描述
输入一个整数N (1 ≤ N ≤ 1000000000)输出描述
输出一个整数,即为f(1) + f(2) + f(3).......f(N)示例1
输入:
7
输出:
21
C 解法, 执行用时: 1ms, 内存消耗: 476KB, 提交时间: 2018-09-18
#include <stdio.h> int main() { long long N,i; long long ans=0; scanf("%lld",&N); for(i=N;i>0;i/=2) { ans+=((i+1)/2)*((i+1)/2); } printf("%lld",ans); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 236KB, 提交时间: 2019-01-06
#include "stdio.h" #include "stdlib.h" int main() { unsigned long long n,i,j,ret=0; scanf("%llu",&n); i=n; while(i>=1) { if(0==(i&1)) { ret+=i*i/4; } else { ret+=(i+1)*(i+1)/4; } i=i/2; } printf("%llu",ret); return 0; }