codeforces 10C C. Digital Root(数论)
来源:互联网 发布:手机建筑图纸软件 编辑:程序博客网 时间:2024/06/07 17:57
题目链接:
codeforces 10C
题目大意:
定义
题目分析:
- 首先我们能够知道d(x \cdot y ) = d ( d(x) \cdot d(y) ),那么我们只要找出n以内的数的约数的个数,就知道了满足条件的情况数,作为ans1。
- 然后我们通过记录数字根分别是1-9的数的个数,然后直接利用可以计算得到i分为因数i和j的所有情况,作为ans2。
sum[i]∗sum[j]∗sum[k](i=k⋅j) - 然后用ans2-ans1即可。
- 其中计算第一个可以采用筛法
O(n⋅logn) 的,最开始用筛因数的方法O(n1.5)的做超时了。。。。 后来才发现自己好傻比,联筛法都没想到。
AC代码:
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <vector>#define MAX 1000007using namespace std;typedef long long LL;int d[MAX],a[MAX],n;LL sum[10];void init ( ){ memset ( d , -1, sizeof ( d ) ); for ( int i = 1 ; i < 10 ; i++ ) d[i] = i; for ( int i = 10 ;i < MAX; i++ ) { int x = i ,sum = 0; while ( x ) { sum += x%10; x /= 10; } d[i] = d[sum]; }}int main ( ){ init ( ); while ( ~scanf ( "%d" , &n ) ) { LL ans = 0; /*for ( int i = 1 ; i <= n ; i++ ) for ( int j = 1 ; j*j <= i ; j++ ) { if ( i%j ) continue; int x = i/j; if ( d[i] == d[d[x]*d[j]] ) { if ( x == j ) ans++; else ans += 2; } }*/ memset ( a , 0 , sizeof ( a ) ); for ( int i = 1 ; i <= n ; i++ ) for ( int j = i ; j <= n ; j+= i ) a[j]++; for ( int i = 2 ; i <= n ; i++ ) a[i] += a[i-1]; ans = a[n]; LL total = 0; memset ( sum , 0 , sizeof ( sum ) ); for ( int i = 1 ; i <= n ; i++ ) sum[d[i]]++; for ( int i = 1 ; i < 10 ; i++ ) for ( int j = 1 ; j < 10 ; j++ ) total += sum[i]*sum[j]*sum[d[i*j]]; total -= ans; printf ( "%lld\n" , total ); }}
0 0
- codeforces 10C C. Digital Root(数论)
- CodeForces 10 C.Digital Root(数论)
- CodeForces 10C. Digital Root
- #10 C. Digital Root (数论)
- Codeforces 10C Digital Root 规律题
- CF 10C Digital Root
- CodeForces 7C 【数论】
- CodeForces 399C Cards (数论)
- Codeforces 487C 数论+构造
- Codeforces 696C PLEASE(数论)
- codeforces round # 412 c(数论)
- Codeforces gym 101353 C 数论
- Codeforces Round #372 (Div. 2) C. Plus and Square Root 数论、方程、化简、推公式
- Eddy's digital Root hdu1163 数论
- SGU 118 Digital Root(数论)
- CodeForces 75C Modified GCD 【二分+数论】
- 【数论】codeforces 327C Magic five
- codeforces 251C Number Transformation(数论)
- mysql常用语句
- leetcode Linked List Cycle II
- Android Fragment嵌套
- Selenium 使用方法小结
- iOS thread1:exc_bad)access(code=exc_1386_gpflt) 调试方案
- codeforces 10C C. Digital Root(数论)
- Spring 3 MVC深入研究
- testlink安装全攻略
- Xilinx Spartan 6 驱动ADS1278/4
- MySQL字符集
- 搭建git for windows服务器(100%可以成功)
- 说说最近一段时间找工作的事(Java后端开发)
- 我的美国CS面试经验分享
- 2016华为机试-自动售货机