質問編集履歴

3

前提・実現したいことを一部訂正しました。

2020/05/09 04:48

投稿

Tepura
Tepura

スコア5

test CHANGED
File without changes
test CHANGED
@@ -128,11 +128,11 @@
128
128
 
129
129
  ### 試したこと
130
130
 
131
- ・上記コードでは7や11などの2,3,5のいづれの倍数にも当てはまらない数字をスキップしながら、dataに値を格納しています。
131
+ ・上記コードではp1,p2,p3いづれの倍数にも当てはまらない数字をスキップしながら、dataに値を格納しています。
132
132
 
133
133
 
134
134
 
135
- ・その他考えたプログラムは3重ループを書いて1*2^(0-n)*3^(0-n)*5^(0-n)のすべての組み合わせを求めた後にqsortして1000番目を求めようとしました。
135
+ ・その他考えたプログラムは3重ループを書いて1*p1^(0-n)*p2^(0-n)*p3^(0-n)のすべての組み合わせを求めた後にqsortして1000番目を求めようとしました。
136
136
 
137
137
 
138
138
 

2

質問タイトルと質問内容を一部訂正しました。

2020/05/09 04:48

投稿

Tepura
Tepura

スコア5

test CHANGED
@@ -1 +1 @@
1
- C言語で1*2^n*3^n*5^n (n>=0)を満たす1000番目に小さい整数を求めたいです。
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*2^n*3^n*5^n (n>=0) を満たす整数を小さい順に並べ1000番目に小さい値をできるだけ計算量を少なく求めたいです。
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

ソースコードをマークダウンで修正致しました。

2020/05/09 04:46

投稿

Tepura
Tepura

スコア5

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