結果
問題 | No.294 SuperFizzBuzz |
ユーザー |
![]() |
提出日時 | 2016-05-09 03:55:01 |
言語 | C90 (gcc 12.3.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,082 bytes |
コンパイル時間 | 167 ms |
コンパイル使用メモリ | 26,496 KB |
最終ジャッジ日時 | 2025-01-28 12:24:27 |
合計ジャッジ時間 | 710 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.c: In function 'main': main.c:43:9: error: 'for' loop initial declarations are only allowed in C99 or C11 mode 43 | for (int nfive = 3; nfive <= rank; nfive+=3) | ^~~ main.c:43:9: note: use option '-std=c99', '-std=gnu99', '-std=c11' or '-std=gnu11' to compile your code
ソースコード
#include <stdio.h>#include <stdlib.h>#include <stddef.h>#define int ptrdiff_t#define div lldiv#define div_t lldiv_t#define abs(a) ((a)<0?-(a):(a))#define min(a,b) ((a)<(b)?(a):(b))int N;int conb(int n, int r) {int p = 1;int q = 0;while (r--)p=p*n--/++q;return p;}int check(int a, int rank) {int t = 0;if (a%2 == 0) return 0;while (rank--)if (a & (1ULL << rank))t++;return t%3 == 0;}void print(int a, int rank) {while (rank--)if (a & (1ULL << rank))putchar('5');elseputchar('3');printf("\n");}main() {scanf("%td\n", &N);int rank = 3;for (rank = 3; ; rank++) {int t = 0;for (int nfive = 3; nfive <= rank; nfive+=3)t += conb(rank-1, nfive-1);if (t < N) {N-=t;} else {break;}}int a=0;do {if (check(a, rank))if (--N == 0)break;a++;} while(1);print(a, rank);return 0;}