質問編集履歴
3
前提・実現したいことを一部訂正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -128,11 +128,11 @@
|
|
128
128
|
|
129
129
|
### 試したこと
|
130
130
|
|
131
|
-
・上記コードでは
|
131
|
+
・上記コードではp1,p2,p3いづれの倍数にも当てはまらない数字をスキップしながら、dataに値を格納しています。
|
132
132
|
|
133
133
|
|
134
134
|
|
135
|
-
・その他考えたプログラムは3重ループを書いて1*
|
135
|
+
・その他考えたプログラムは3重ループを書いて1*p1^(0-n)*p2^(0-n)*p3^(0-n)のすべての組み合わせを求めた後にqsortして1000番目を求めようとしました。
|
136
136
|
|
137
137
|
|
138
138
|
|
2
質問タイトルと質問内容を一部訂正しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
C言語で1*
|
1
|
+
C言語で1*p1^n*p2^n*p3^n (n>=0)を満たすk番目に小さい整数を求めたいです。
|
test
CHANGED
@@ -2,9 +2,29 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
1*
|
5
|
+
1*p1^n*p2^n*p3^n (n>=0) (p1,p2,p3は2<=p1,p2,p3<=7を満たす素数)を満たす整数を小さい順に並べk(1<=k<=1000)番目に小さい値をできるだけ計算量を少なく求めたいです。
|
6
6
|
|
7
7
|
|
8
|
+
|
9
|
+
具体例
|
10
|
+
|
11
|
+
p1=2,p2=3,p3=5,k=4のとき)
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
1番目 1*p1^0*p2^0*p3^0 = 1
|
16
|
+
|
17
|
+
2番目 1*p1^1*p2^0*p3^0 = 2
|
18
|
+
|
19
|
+
3番目 1*p1^0*p2^1*p3^0 = 3
|
20
|
+
|
21
|
+
4番目 1*p1^2*p2^0*p3^0 = 4
|
22
|
+
|
23
|
+
5番目 1*p1^0*p2^0*p3^1 = 5
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
となり、求める値は4
|
8
28
|
|
9
29
|
|
10
30
|
|
1
ソースコードをマークダウンで修正致しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,11 +18,19 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
C言語
|
21
|
+
```C言語
|
22
22
|
|
23
|
-
|
23
|
+
#include <stdio.h>
|
24
24
|
|
25
|
+
#include <string.h>
|
25
26
|
|
27
|
+
#include <stdlib.h>
|
28
|
+
|
29
|
+
#include <stdbool.h>
|
30
|
+
|
31
|
+
#include <math.h>
|
32
|
+
|
33
|
+
#pragma warning(disable : 4996) //_CRT_SECURE_NO_WARNINGS
|
26
34
|
|
27
35
|
int main(void) {
|
28
36
|
|
@@ -36,19 +44,11 @@
|
|
36
44
|
|
37
45
|
data[0] = 1;
|
38
46
|
|
39
|
-
/*標準入力*/
|
40
|
-
|
41
47
|
scanf("%d%d%d%d", &p1, &p2, &p3, &k);
|
42
48
|
|
43
49
|
while (cnt <= k - 1) {
|
44
50
|
|
45
|
-
/*resを一時退避*/
|
46
|
-
|
47
51
|
temp = res;
|
48
|
-
|
49
|
-
/*p1の倍数か確認する。*/
|
50
|
-
|
51
|
-
/*p1の倍数の場合、割れるところまで割る*/
|
52
52
|
|
53
53
|
while (res % p1 == 0) {
|
54
54
|
|
@@ -102,7 +102,7 @@
|
|
102
102
|
|
103
103
|
}
|
104
104
|
|
105
|
-
|
105
|
+
```
|
106
106
|
|
107
107
|
|
108
108
|
|