
2020-08-16
发布日期:2021-05-13 21:09:26
浏览次数:16
分类:精选文章
本文共 1313 字,大约阅读时间需要 4 分钟。
数论求F(n)
/*
题意: f(5,1)=4,即5/1=5,5-1=4; f(8,2)=3,即8/2=4,4-1=3; f(7,3)=1,即7/3=2,2-1=1; f(5,4)=0,即5/4=1,1-1=0; 求: F(n)=f(n,1)+f(n,2)+f(n,3)+…+f(n,n) =n/1+n/2+…+n/n-n 思路: n非常大,暴力会超时,找数试找规律,练思维的题 这里先求:n/1+n/2+…+n/n (每个数的结果都是整数,有小数的舍弃小数部分) 例:F(9)=n/1+n/2+n/3+n/4+n/5+n/6+n/7+n/8+n/9 9 4 3 2 1 1 1 1 1 相差 5 1 1 1 5个1,1个2,1个3,1个4 例:F(12)=n/1+n/2+n/3+n/4+n/5+n/6+n/7+n/8+n/9+n/10+n/11+n/12 12 6 4 3 2 2 1 1 1 1 1 1 相差 6 2 1 1 6个1,2个2,1个3,1个4 法1:结论:我们可以先计算后面的,然后再加上前面的 有了这个规律:我们可以写出减少时间短的代码法2:(不理解)
https://blog.csdn.net/liverpippta/article/details/8216071 *//*法1: #includeint main(){ int tt; scanf("%d",&tt); while(tt--) { int n; scanf("%d",&n); long long sum=0;//求:n/1+n/2+...+n/n int x=0;//**总共会有n个数相加,x记录有多少个数相加** int j=1,i,t; for(i=2;;i++)//**从后往前加** { t=n/(i-1)-n/i; if(t==0) break; x+=t; sum+=t*j; j++;//**后面的相邻的不同数之间差1,当差的不是1的时候已跳出循环了** } for(i=1;i<=n-x;i++)//**再加前面的** sum+=n/i; printf("%lld\n",sum-n); } return 0;}*/
/*法2: #include#include int main() { int a; scanf("%d",&a); while(a--) { int i,p,t; long long s=0; scanf("%d",&t); p=sqrt(t); for(i=1;i<=p;i++) s+=(t/i); s*=2; s=s-p*p-t; printf("%lld\n",s); } return 0; }*/
//也可用快速密来求,可惜我没有找到代码
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月26日 18时06分52秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
TA部署失败重置过程
2021-05-15
Horizon Daas租户管理平台扩展分配时报:内部错误
2021-05-15
vcenter访问报503错误处理
2021-05-15
项目计划甘特图绘制说明
2021-05-15
1004.串口收发数据集成bug
2021-05-15
12010.linux应用程序之spi
2021-05-15
09.QT应用程序启动外部exe文件
2021-05-15
1009. clion调试段错误
2021-05-15
C/C++:线性表之顺序表
2021-05-15
嵌入式系统试题库(CSU)
2021-05-15
ODATA入门:UPDATE方法实现
2021-05-15
图神经网络7日打卡营学习心得
2021-05-15
【C++】Windows下多个子线程互斥——6
2021-05-15
electronJS 开发linux App
2021-05-15
STM32F7 LWIP协议栈TCP速度测试
2021-05-15
漫谈工业软件(4)-关于开源工业控制软件
2021-05-15
IEC61499 编程(3)-4DIAC 控制台输出
2021-05-15
Arm Mbed OS 更适合大学实训平台
2021-05-15
MbedOS 设备中的模数转换(ADC)
2021-05-15