J - Joseph’s Problem 找规律

2024-02-13 16:58
文章标签 problem 规律 joseph

本文主要是介绍J - Joseph’s Problem 找规律,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

给出n  k

当 i 属于 1~n 时 ,求解 n% i 的和

n 和 k 的范围都是 1 到 十的九次方

普通的计算当然会超时


我们先通过打表几个数来看看

下面的括号表示当余数为0的时候 i 为多少

n = k =90 的时候

0 (1)0 (2)0 (3)2 0 (5)0 (6)6 2 0 (9)0 (10)
2 6 12 6 0 (15)10 5 0 (18)14 10
6 2 21 18 15 12 9 6 3 0 (30)
28 26 24 22 20 18 16 14 12 10
8 6 4 2 0 (45)44 43 42 41 40
39 38 37 36 35 34 33 32 31 30
29 28 27 26 25 24 23 22 21 20
19 18 17 16 15 14 13 12 11 10
9 8 7 6 5 4 3 2 1 0 (90)

n = k =91 的时候
**************************************
0 (1)1 1 3 1 1 0 (7)3 1 1
3 7 0 (13)7 1 11 6 1 15 11
7 3 22 19 16 13 10 7 4 1
29 27 25 23 21 19 17 15 13 11
9 7 5 3 1 45 44 43 42 41
40 39 38 37 36 35 34 33 32 31
30 29 28 27 26 25 24 23 22 21
20 19 18 17 16 15 14 13 12 11
10 9 8 7 6 5 4 3 2 1
0 (91)
**************************************

n = k =92 的时候

0 (1)0 (2)2 0 (4)2 2 1 4 2 2
4 8 1 8 2 12 7 2 16 12
8 4 0 (23)20 17 14 11 8 5 2
30 28 26 24 22 20 18 16 14 12
10 8 6 4 2 0 (46)45 44 43 42
41 40 39 38 37 36 35 34 33 32
31 30 29 28 27 26 25 24 23 22
21 20 19 18 17 16 15 14 13 12
11 10 9 8 7 6 5 4 3 2
1 0 (92)
**************************************

n = k =93 的时候

0 (1)1 0 (3)1 3 3 2 5 3 3
5 9 2 9 3 13 8 3 17 13
9 5 1 21 18 15 12 9 6 3
0 (31)29 27 25 23 21 19 17 15 13
11 9 7 5 3 1 46 45 44 43
42 41 40 39 38 37 36 35 34 33
32 31 30 29 28 27 26 25 24 23
22 21 20 19 18 17 16 15 14 13
12 11 10 9 8 7 6 5 4 3
2 1 0 (93)
**************************************

容易发现,都是等差数列,只是前面的比较难以发现

那么我们从后往前看

后面是等差为1的等差数列

再前面一个就是等差为2的等差数列

再前面一个就是等差为3的等差数列

并且上叙 1  2  3都是 n/i 得到的


最后要注意下都用长整型的防止溢出

并且计算等差数列的项的时候不能超出n


#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;#define LL long longint main()
{LL sum;LL n,k;//freopen("in.txt","r",stdin);freopen("joseph.in","r",stdin);freopen("joseph.out","w",stdout);while(scanf("%lld%lld",&n,&k)!=EOF){sum=0;LL a1,d,x;for(LL i=2;i<=n;i+=x){a1=k%i;d=k/i;if(d==0){sum+=a1*(n-i+1);break;}x=a1/d+1;x=min(x,n-i+1);sum+=x*a1-x*(x-1)*d/2;}printf("%lld\n",sum);}return 0;
}





这篇关于J - Joseph’s Problem 找规律的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/706087

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

计蒜客 Half-consecutive Numbers 暴力打表找规律

The numbers 11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545 and t_i=\frac{1}{2}i(i+1)t​i​​=​2​​1​​i(i+1), are called half-consecutive. For given NN, find the smallest rr which is no smaller than NN

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

CF#284 (Div. 2) C.(几何规律)

题目链接:http://codeforces.com/contest/499/problem/C 解题思路: 把两个点的坐标分别带入方程组,如果最后两个值相乘为负,即异号,计数器++。其中有一个有趣的现象,从A到B的最短步数,可以变化为求A和B之间夹了多少条直线,那么最后只要求出直线数,即可求出最小步数。 如果一条直线夹在A和B中间,那么把A和B的坐标带入后,所得值相乘一定为负。数据很

HDU2524(规律推导)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2524 解题思路: 暴力推出矩阵,以n = 2 , m = 4为例: 1 3  6  10 3 9 18 30 可以发现第一行和第一列都是有规律的,彼此相差2、3、4·····,其他元素为相应行第一个元素乘以第一列元素的积。预处理之后,我们O(1)就可以输出g[n][m]的值。 另外,

11991 - Easy Problem from Rujia Liu?

题意: 输入一串整型数列,再输入两个数k,v,输出第k个v的序号。不存在则输出0,如第一个样例 8 41 3 2 2 4 3 2 11 3 //第1个3,序号为2,输出22 4 //第2个4,不存在,输出03 2 //第3个2,序号为7,输出74 2 思路: struct num {

HDU 1097 A hard puzzle(规律)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=1097 题意: 求a的b次方的最后一位。 题解: 直接从例子入手, 第一组数据 7 66,结果如下(只要最后一位所以模10) 7 9 3 1 7 9··· 循环节为4,即结果在4个数值内循环出现。 第二组数据 6 800,结果如下 6 6 6 6··· 循环节为1 ···

HDU 1016 Prime Ring Problem (深搜)

OJ题目 : click here ~~ 大概题意:n个数,形成一个环,使得相邻两个数的和为素数。以1开始,按字典序输出序列。 很简单的深搜。 AC_CODE int n;int visit[22];int num[22];int len;bool Is_prime(int x){for(int i = 2;i*i <= x;i++)if(x%i == 0) return

【科普知识】一体化电机掉电后“位置精准复位“机制与规律

在工业自动化、机器人技术及精密控制领域,电机作为核心执行元件,其稳定运行和精确控制对于整个系统的性能至关重要。 然而,电机在运行过程中可能会遭遇突然断电的情况,这会导致电机失去驱动力并停止在当前位置,甚至在某些情况下发生位置偏移。 因此,电机掉电后的位置恢复机制成为了一个关键技术问题。本文将探讨电机掉电后位置恢复的原理机制,以期为相关领域的研究与应用提供参考。 一、电机掉电后的位置偏移现象