codeforces 10C C. Digital Root(数论)
2015-09-01 10:35
375 查看
题目链接:
codeforces 10C题目大意:
定义d(x)d(x)为x的数字根,找出n以内的满足d(z)=d(d(x)⋅d(y))d(z) = d ( d (x) \cdot d(y) )但不满足x⋅y=zx \cdot y =z这样的x,y,z有多少组。题目分析:
首先我们能够知道d(x \cdot y ) = d ( d(x) \cdot d(y) ),那么我们只要找出n以内的数的约数的个数,就知道了满足条件的情况数,作为ans1。然后我们通过记录数字根分别是1-9的数的个数,然后直接利用sum[i]∗sum[j]∗sum[k](i=k⋅j)sum[i]*sum[j]*sum[k](i = k \cdot j)可以计算得到i分为因数i和j的所有情况,作为ans2。
然后用ans2-ans1即可。
其中计算第一个可以采用筛法O(n⋅logn)\mathcal{O}(n \cdot \log n)的,最开始用筛因数的方法O(n1.5)的做超时了。。。。\mathcal{O}(n^{1.5})的做超时了。。。。后来才发现自己好傻比,联筛法都没想到。
AC代码:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <vector> #define MAX 1000007 using 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 ; 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 ); } }
相关文章推荐
- 命名规范(2)通用命名约定
- 【前端学习笔记】2015-09-01 附 split()方法、readyState
- 能耗折算标准煤公式
- js原生无缝滚动demo
- leetcode Linked List Cycle II
- poj 2286 The Rotation Game IDA*算法
- php第一阶段html_table(2)
- 自动释放池什么时候创建,什么时候销毁?
- js,php 使用正则表达式解析GPS数据
- 项目:××官网改版总结经验和收获
- mysql常用语句
- 8月国内网站流量统计TOP5:360安全中心季军
- android调整版本问题记载
- RevitAPI: PlanarFace.Normal 和 PlanarFace.FaceNormal
- voltDB 查询语句解析过程 初步分析
- SQL Server 查询数据库中所有的表名及行数
- 关于C++中的显示调用explicit
- Python Unitest 源码阅读:概述
- 常规功能和模块自定义系统(cfcmms)—005开发环境搭建和创建项目
- JNI编程指南-第四章 字段和方法