プログラミングのお題スレ Part22 (860レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
77
(2): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2023/08/26(土) 23:37:32.47 ID:JYg5slq9(3/3) AAS
>>76
76(2): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2023/08/26(土) 23:29:51.32 ID:JYg5slq9(2/3) AAS
>>71 C++
#include <stdio.h>
bool is_kaibun(const char *str, size_t len)
{
for (size_t i = 0; i < len/2; i++)
if (str[i] != str[len - i - 1]) return false;
return true;
}
void detect_kaibun(const char *str, size_t len)
{
for (size_t klen = 1; klen <= len; klen++)
{
for (size_t i = 0; i < len - klen + 1; i++)
if (is_kaibun(str + i, klen))
printf("%*s\n", (int)klen, str + i);
}
}
int main(void)
{
detect_kaibun("ABCBCXC", 7);
return 0;
}
間違えた。
printf("%*s\n", (int)klen, str + i);

printf("%.*s\n", (int)klen, str + i);
に訂正。
318: デフォルトの名無しさん [sage] 2024/04/01(月) 16:50:08.47 ID:0Kkx57P3(1) AAS
2個、4個、8個…みたいにメモ化すればMはlogMにできるかもしれんね
空間がlogM倍されそうだが
335: デフォルトの名無しさん [sage] 2024/04/18(木) 22:55:38.47 ID:n9UdHBZN(1) AAS
総合すると有効桁じゃなくて精度が2桁良いし実装上は大差ないから改良版を使う、と言う方が自然では?
459: デフォルトの名無しさん [] 2025/01/01(水) 20:32:30.47 ID:ZpviU2f/(7/7) AAS
>>349
349(4): デフォルトの名無しさん [sage] 2024/06/01(土) 11:08:12.83 ID:hzaQXY32(2/2) AAS
お題: バイト列が与えられる。先頭から解析した場合にバイトが1だったら次の4バイトを読み込んで整数として出力し、バイトが2だったら次のバイトを0が来るまで読み込んで文字列として出力せよ

入力
1 1 0 0 0 2 65 66 67 0 1 128 0 0 0

出力
1ABC128
Java
外部リンク:paiza.io
518
(1): デフォルトの名無しさん [sage] 2025/01/31(金) 22:10:00.47 ID:4ClqIqkw(1) AAS
普通は問題発生前に気がつく
588: デフォルトの名無しさん [sage] 2025/02/12(水) 00:31:16.47 ID:1WuTe288(1) AAS
普段はプログラム載せるだけだけど、みんな意外と饒舌なんだなw
691
(1): 9 [sage] 2025/03/19(水) 16:33:58.47 ID:kDrq13vm(1) AAS
>>686
686(2): 9 [sage] 2025/03/18(火) 21:41:48.53 ID:GYPHuJM6(3/5) AAS
>>683
>やはり想定通り気の利いた高速解放が要りますテヘペロ。

そのヒントになるかいな…?
・16進数を10進数に変換すると桁数は同じまたは高々1桁増えるのみ(だともう、証明略)
・桁数が同じ場合、16進数と10進数が同じということはあり得ない、自明
・一桁増える場合は先頭または末尾に一桁増える。残りが16進数と同じ部分文字列であるかが評価対象となる
> ・桁数が同じ場合、16進数と10進数が同じということはあり得ない、自明

大間違い。16進数と10進数で桁数が同じ値のうち、一桁のものは、16進も10審も同じだった…orz

結局、高速解放はあるんだろうか?
あるいはコラッツ予想みたいに「無いかもしれない」類の、考えるだけ無駄な問題なのだろうか?
698
(4): デフォルトの名無しさん [sage] 2025/03/21(金) 12:58:11.47 ID:CgJbZEAu(2/2) AAS
>>697
697(6): デフォルトの名無しさん [sage] 2025/03/21(金) 12:56:29.73 ID:CgJbZEAu(1/2) AAS
>>680  Rust
fn odai_680() -> Vec<i128> {
 let mut answer = vec![0];
 let n_max = (0..).find(|&n| pow16(n + 1) > pow10(36)).unwrap();
 for s in (0..).take_while(|&s| pow16(n_max) >= pow10(n_max + s + 1)) {
  let c = (0..=n_max).map(|i| pow16(i) - pow10(i + s)).collect::<Vec<_>>();
  let rmax = c.iter().scan(0, |s, &c| { *s += if c > 0 { c * 9 } else { 0 }; Some(*s) }).collect::<Vec<_>>();
  let rmin = c.iter().scan(0, |s, &c| { *s += if c < 0 { c * 9 } else { 0 }; Some(*s) }).collect::<Vec<_>>();
  let (mut i, mut n, mut d, mut ct) = (0, 1, vec![0; c.len()], vec![0; c.len() + 1]);
  loop {
   d[i] += 1;
   if d[i] < 10 {
    let m = pow10(n as u32 + s); ct[i] = c[i] * d[i] + ct[i+1];
    if i == 0 {
     if ct[0] >= 0 && ct[0] % m < pow10(s) { answer.push(d.iter().take(n).rev().fold(0, |sum, &d| sum * 16 + d)) }
    } else {
     let (max, min) = (ct[i] + rmax[i-1], ct[i] + rmin[i-1]);
     if max >= 0 && (max - min > m || pow10(s) > min % m || min % m > max % m) { i -= 1; }
    }
   } else { d[i] = -1; i += 1; if i == n { if n == d.len() { break; } n += 1; } }
  }
 }
 answer.sort(); answer
}
// 略記
fn pow16(x: u32) -> i128 { 16_i128.pow(x) }
fn pow10(x: u32) -> i128 { 10_i128.pow(x) }

// 結果検証
fn main() {
 let answer = odai_680();
 assert_eq!(167, answer.len());
 for &a in &answer {
  assert!(a.to_string().contains(&format!("{a:x}")));
 }
 assert_eq!(0, answer[0]);
 assert_eq!(1, answer[1]);
 assert_eq!(357440, answer[10]);
 assert_eq!(2182104649, answer[54]);
 assert_eq!(3927570397557, answer[71]);
 assert_eq!(38135630558262267902210, answer[99]);
 assert_eq!(331052794565713975838768757043267, answer[152]);
 assert_eq!(697786638998562641695629924526065234, answer[answer.len() - 1]);
}
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.040s