当前位置: 首页 > news >正文

oj 数码积和(略难

思路:一开始自己写的代码时间超限了,然后参照了大佬写的代码,构造了三个函数

第一个函数:求数码和的只用循环n次

void is_sum(){for(int i=1;i<N;i++){sum[i]=sum[i/10]+i%10;//递推,sum[i]对应i的数码和}
}

第二个函数:求是否是满足数码积性的,有点儿像欧筛,标记1~N所有满足数码积性的数字

void smjx(){for(int x=2;x*x<=N;x++){for(int y=x;x*y<=N;y++){if(sum[x*y]==sum[x]*sum[y]) a[x*y]=1;}}
}

第三个函数:前缀和,a[i]表示1~i有多少个满足数码积性的数

void pre(){for(int i=1;i<N;i++){a[i]=a[i]+a[i-1];}
}

最后AC代码

#include<stdio.h>
#define N 10000005
int sum[N]={0};
int a[N]={0};
void is_sum(){for(int i=1;i<N;i++){sum[i]=sum[i/10]+i%10;//递推,sum[i]对应i的数码和}
}void smjx(){for(int x=2;x*x<=N;x++){for(int y=x;x*y<=N;y++){if(sum[x*y]==sum[x]*sum[y]) a[x*y]=1;}}
}
void pre(){for(int i=1;i<N;i++){a[i]=a[i]+a[i-1];}
}
int main(){is_sum();smjx();pre();int T;scanf("%d",&T);while(T--){int L,R,cnt=0;scanf("%d %d",&L,&R);printf("%d\n",a[R]-a[L-1]);}}

http://www.dtcms.com/a/588862.html

相关文章:

  • RT-Thread开发实战 --- PIN设备的使用
  • Android的binder机制理解
  • 二十五、STM32的DMA(数据转运)
  • 湖北省建设厅政务公开网站wordpress加速网站插件
  • 提示词(Prompt)工程与推理优化
  • 简析单目相机模型中的针孔模型
  • Apache Flink CDC——变更数据捕获
  • 从“数据堆场”到“智能底座”:TDengine IDMP如何统一数据语言
  • 从细胞工厂到智能制造:Extracellular 用 TDengine 打通数据生命线
  • 哪里有建设网站的html展示wordpress
  • Windows 下编译 WhisperKit Android CLI 的解决方案
  • 【第二十一周】机器学习周报
  • 如何在 Ubuntu 24.04 上安装和使用 AdGuard
  • 传统的企业服务如何部署在k8s集群中
  • 【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 2
  • 淘车车二手车数据采集:API接口分析与数据爬取实战
  • C++幻象:内存序、可见性与指令重排
  • 【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 1
  • Product Hunt 每日热榜 | 2025-11-09
  • 网站备案幕布照片尺寸3d溜溜网装修效果图
  • GER VPN 实现pc1和pc2之间的互通
  • 嵌套 Git 仓库(Submodule/子模块)
  • prompt[ai开发项目指示]
  • Go语言:使用Gin框架实现文件上传API服务(一)
  • wordpress社交链接图标宁波seo搜索引擎优化
  • Typora 精通指南:掌握高效 Markdown 写作的艺术
  • WinFrom窗体开发之鼠标交互
  • 【c# 想一句话把 List<List<string>>的元素合并成List<string>】2023-2-9
  • JAVA Function
  • MyBatis-Plus 通用 CRUD 操作全景指南