hihocoder-1623-有歧義的號碼

 2023-12-25 阅读 27 评论 0

摘要:hihocoder-1623-有歧義的號碼 ? #1623 : 有歧義的號碼 時間限制:10000ms 單點時限:1000ms 內存限制:256MB 描述 小Hi參加了一場大型馬拉松運動會,他突然發現面前有一位參賽者背后的號碼竟然和自己一樣,也是666。仔細一看,原來那位參賽者把自己號碼帖反(旋

hihocoder-1623-有歧義的號碼

?

#1623 : 有歧義的號碼

時間限制:10000ms
單點時限:1000ms
內存限制:256MB

描述

小Hi參加了一場大型馬拉松運動會,他突然發現面前有一位參賽者背后的號碼竟然和自己一樣,也是666。仔細一看,原來那位參賽者把自己號碼帖反(旋轉180度)了,結果號碼999看上去變成了號碼666。 ?

小Hi知道這次馬拉松一共有N名參賽者,號碼依次是1~N。你能找出所有可能因為貼反而產生歧義的號碼嗎? ?

一個號碼K可能產生歧義當且僅當反轉之后的號碼是合法的數字K',并且滿足1 ≤ K' ≤ N且K' ≠ K。 ?

例如:

3沒有歧義,因為貼反之后不是合法的數字。 ?

100沒有歧義,因為001以0開頭,不是合法號碼。 ?

101也沒有歧義,因為貼反之后還是101本身。 ?

假設N=10000000,則1025689有歧義,因為貼反之后變成6895201。如果N=2000000,則1025689沒有歧義,因為6895201大于N。

輸入

一個整數N。(1 ≤ N ≤ 100000)

輸出

從小到大輸出1~N之間所有有歧義的號碼。每個號碼一行。

樣例輸入
10
樣例輸出
6
9

?

直接使用暴力得到。

?

#include <cstdio> 
///                    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
const int legal[10] = {1, 1, 1, 0, 0, 1, 1, 0, 1, 1};
const int Revse[10] = {0, 1, 2, 0, 0, 5, 9, 0, 8, 6};  bool Judge(const int num, int c){int ret = 0, cur = c; if(cur % 10 == 0){return false; }while(cur){if( legal[cur % 10] ){ret = 10*ret + Revse[cur % 10]; }else{return false; }cur = cur / 10; }if(ret <= num && c != ret ){return true; }return false; 
}int main(){int n; while(scanf("%d", &n) != EOF){for(int i=1; i<=n; ++i){if( Judge(n, i) ){printf("%d\n", i );}}}return 0; 
}

  

?

轉載于:https://www.cnblogs.com/zhang-yd/p/7821662.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/194992.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息