🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

412閲覧

n 桁を超える最小の値

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2019/11/13 13:11

編集2020/02/04 04:58

標準入力から正整数 n( 0< n < 2000 )が与えられたとき、3冪数( 3k , k>0 )でその十進表現が n 桁を超える最小の値を左詰にして1行として書き出すプログラムを作りたいです。

実行例1
標準入力
1
標準出力
27

実行例2
標準入力
2
標準出力
243

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/11/13 13:14

で、しつもんはなんでしょうか
maisumakun

2019/11/13 13:14

このままでは丸投げです。どこまで作って、何がわからない感じですか?
otn

2019/11/13 13:18

> 作りたいです。 頑張って作りましょう!
raccy

2019/11/13 13:29

GNU MPとか多倍長整数ライブラリは**使ってはいけない**という前提で良いんですよね?n=1999のときの3^4190を表示するだけでも結構大変そうなんですけど。
guest

回答2

0

Ruby

1puts 3**((gets.to_i / Math.log10(3)).ceil)

このコードをCで実装すればいいだけです。ただし、Cには多倍長整数が存在しないので、自分で実装して下さい。面倒なので私はしません。n=1999の時は

plain

113742231976089993825924505225296099507118178057806905765769037401188248609301570217293818616817366753876269535435563950620537765220323513155072159327807727374305477544433870917530050955070287845237809114383807300123231941063472776862839379052911660113884020348832946476896466644463652985686828482927867942438599638160390594084509955815858309545964702674278466459334229350698527530132267404401827152057174555864160056028011235611450393424740945500065603017636066911645235515247849507338439426925421687093890213924874921565646034466454348094852160668996394066764552316307050220383741761262968143993900913932950332996899326475498287475078588914702718979736749446170280548909351731544826935881057352709755250507100634299835954616729209993596187205634289024897526845308492543804675984911399389377305445606432978822723842032045578764878789664626108259144233645656985332386702519497266494362685828287963220099426912231296599346470699856188090282767320888832607473484536035227066042108389494227098920413248232105079445849620269448366177253025936316566961634280809557589342894047698753444999069808682848349648975214912961280336098618191568933228148634532695934971234735955629209466399623573572273182262784989904552890244743314450209855074127833604173752222160561995717095516756699829976386368924605441701302606286682419131074197272867220176269436776950227146332328854744402177699424303238997210548980868828287251155470800017200006381979152510402950737349945941824654110166165492691641056723821537878572202143643336151302552724810458475519719790709612507237949549219097315571744169468343316227442627699802634030906839515266194766470107649519531149123424469519141148229480709415357015528489845461135236339820713258057680101684695247925333952305186007484641996133714294067063128901610991194573538236441516288844895568422681304701906661820999957951730860613845101804606690356172189118557144440532380141095812639403534476986685331266654305870075438957336071459201650510242542536911388739203808198752018248314539449

になります。

投稿2019/11/13 13:39

raccy

総合スコア21737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

フィボナッチの問題と同様にやればできますね。

C

1#include <stdio.h> 2 3#define N 2000 4 5int main(void) 6{ 7 char a[N + 1] = { 1 }; 8 int k = 1, n, i, r; 9 if (scanf("%d", &n) != 1 || n < 1 || n >= N) return 1; 10 11 for (;;) { 12 for (r = i = 0; i < k; i++) { 13 r += a[i] * 3; a[i] = r % 10; r /= 10; 14 } 15 if (r) { 16 a[k] = r; 17 if (++k > n) break; 18 } 19 } 20 while (k > 0) putchar(a[--k] + '0'); 21 putchar('\n'); 22}

理解できましたか?
分からないところは質問してください。

投稿2019/11/14 07:52

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/14 12:59

解決しました!有難う御座いました(^^)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問