08:36:24
昨天的第二题居然是题目描述自己出问题了!结果大家都只有5分(那个很奇怪的速度式子果然有问题呢)
后面应该是Cb-Ca来着。
09:26:28
写了一题简单数学题, (2004年 普及组的最后一题) 很巧的是这道题和今年初赛阅读程序的最后一题是一样的
(不想写昨天的第三题啊,题解看起来就很烦呢)
10:28:30
在第三题挣扎了一会儿,决定放弃,去写了试炼场 简单数学问题 的第二题,明明是一道 普及- 的题目,愣是提交了五次才过。
11:12:19
又写了一题,高精度调了好一会儿,因为数组开小了,它溢出后直接跳出一堆负数(下次写高精要注意数组范围
这道题只有 普及+/提高- 但我学会了原来C++ 可以直接使用 log10() (lg) 和 log() (ln)
11:38:14
这题好水码量超小。
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define For(i,a,b) for(register int i=a;i<=b;++i) using namespace std; int sum=0,n; int main(){ cin>>n; For(i,1,n)sum+=n/i; cout<<sum<<endl; return 0; }
不过具体怎么单独求一个数字的约数个数呢?可以用质因数分解呀 哈哈。
对于一个大于1的整数都可以这样分解
那么一个数的约数个数
下面的简证摘自百度百科
由约数定义可知p1^a1的约数有:p1^0, p1^1, p1^2......p1^a1 ,共(a1+1)个;同理p2^a2的约数有(a2+1) 个......pk^ak的约数有 (ak+1)个。
故根据乘法原理:n的约数的个数就是(a1+1)(a2+1)(a3+1)…(ak+1)。