プログラミングのお題スレ Part22 (856レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
674: デフォルトの名無しさん [] 2025/03/14(金) 20:19:17.17 ID:Imul3vYR(1) AAS
>>672672(1): デフォルトの名無しさん [sage] 2025/03/14(金) 02:10:51.25 ID:wjeVVi0w(1/2) AAS
>>671
12の34乗は合っているけどその後の差がおかしくない?
4922235242952026704037113243122008064 から
4608002213423117304076202592425322294 を引いて
314233029528909399960910650696685770 が正解のところ
314233029528909439273950854852378624 となっているよ
正解は1の位が「4 - 4 = 0」になるはずだよね
>>670 Rust 逆文字列を生成する版
use num::BigInt;
fn odai(input: &str) -> Option<String> {
let rev_input: String = input.chars().rev().collect();
let x: BigInt = input.parse().ok()?;
let y: BigInt = rev_input.parse().ok()?;
Some((x - y).to_string())
}
fn main() {
assert_eq!(odai("12345"), Some("-41976".to_string()));
assert_eq!(odai("4922235242952026704037113243122008064"), Some("314233029528909399960910650696685770".to_string()));
}
確かに間違っていた。PowerShellの旧ヴァージョンでは [BigInt]文字列 と書くだけで
文字列をBigInt型に正確に変換できるから>>671671(2): デフォルトの名無しさん [] 2025/03/13(木) 21:13:53.77 ID:SRpNsp20(1) AAS
>>670
PowerShell
function f([BigInt]$n)
{
$c = [char[]][string]$n
$n - [BigInt]-join $c[-1..-$c.length]
}
12345, [BigInt]::Pow(12, 34) |% {"$_ → $(f $_)"}
[実行結果]
12345 → -41976
4922235242952026704037113243122008064 → 314233029528909439273950854852378624
のプログラムでも正しい結果が得られるが、
新ヴァージョンではdouble経由での変換に仕様変更されたようで誤差が生じてしまうから
[BigInt]::Parse(文字列) と書かなければならなくなった。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.035s