結果
| 問題 |
No.756 チャンパーノウン定数 (1)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-12-02 01:03:37 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 2,000 ms |
| コード長 | 862 bytes |
| コンパイル時間 | 264 ms |
| コンパイル使用メモリ | 29,824 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-27 04:50:56 |
| 合計ジャッジ時間 | 1,143 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 20 |
コンパイルメッセージ
main.c: In function 'main':
main.c:35:27: warning: implicit declaration of function 'fileno' [-Wimplicit-function-declaration]
35 | if(isatty(fileno(stdin)))printf("input> ");
| ^~~~~~
ソースコード
#include <stdio.h>
#include <stdlib.h>
//isatty
#if defined(WIN32) || (!defined(__GNUC__) && !defined(__clang__))
#include <io.h>
#else
#include <unistd.h>
#endif
int solve(long long n,long long starting,int base){
n+=starting-2;
long long digits=1;
long long expbase=1;
long long x;
for(;(x=digits*expbase*(base-1))<=n;n-=x){
digits++;
expbase*=base;
}
//(digits)桁の数を並べた中のn桁目を求めれば良い
long long num=expbase+n/digits;
long long d=digits-1-n%digits;
for(;d--;num/=base);
return num%base;
}
int main(int argc,char **argv){
long long starting=1;
int base=10;
if(argc>2)base=strtol(argv[2],NULL,10);
if(argc>1)starting=strtoll(argv[1],NULL,base);
long long n;
for(;;){
if(isatty(fileno(stdin)))printf("input> ");
if(scanf("%lld",&n)<0)return 0;
printf("%d\n",solve(n,starting,base));
}
return 0;
}