description
你的名字?以及說出你的身份證號碼。在某個世界有正好十億人,神的眼中,每個人都擁有乙個整數作為靈魂編碼(1~1000000000)。神提供了兩種操作改變你的靈魂編碼:
將當前整數乘以2。(比如從3變成6)。
在當前整數的右邊新增1。(比如從3變成31)。
我的靈魂編碼是a,她的靈魂編碼是b。我能變成她麼(在一系列操作後使得a==b)?
input
輸入包含多組資料測試,每組資料報含整數a,b,(1 ≤ a < b ≤ 1000000000)。(建議使用long long儲存數字)
output
如果我能通過神提供的兩種操作將我變成她那麼輸出yes,否則輸出no。如果可以的話請輸出最少執行多少次,以及執行的具體過程。
sample input
1 31 4
1 1111
sample output
noyes 2
1 2 4
yes 3
1 11 111 1111
解題分析:1.剛讀完題,思緒萬千,以為這題很難,根本不知道從何處下手。
2.但仔細分析兩種操作,容易得到,如果b%2=0或者b%10=1,a就可以通過上述兩種操作得到b;
但我們會因此陷入乙個誤區,有可能寫出只能通過操作1或者只能通過操作2,將a變成b;
請看下面錯誤**
顯然當輸入1 21時輸出是錯誤的,錯誤的原因就在於此**無法分別運用兩種操作。#
include
intmain
(void)if
(a==b)
printf
("\n");
}else
printf
("no\n");
}else
if(b%
10==1)
if(a==b)
printf
("\n");
}else
printf
("no\n");
}else
printf
("no\n");
}return0;
}
3.而怎麼擺脫這個誤區呢?我們可以逆向思維,如果b通過這兩種操作的反向操作變成a,也就成功了。
下面為根據此修改的ac**
```cpp
#include
intmain
(void
)else
if(b%
10==1)
else
break;}
c[i]
=a;if
(a==b)
printf
("\n");
}else
printf
("no\n");
}return0;
}
Problem D 你的名字
time limit 1 sec memory limit 128 mb submit 1098 solved 265 你的名字?以及說出你的身份證號碼。在某個世界有正好十億人,神的眼中,每個人都擁有乙個整數作為靈魂編碼 1 1000000000 神提供了兩種操作改變你的靈魂編碼 1.將當前整數乘以...
你的名字。oj
time limit 2000ms memory limit 65536kb problem description 不管你在世界的哪個地方,我一定會,再次去見你的。電影 你的名字。中,由男主角瀧和女主角三葉夢幻般的交換身體的經歷,引發了一段奇幻動人的故事。令人意想不到的是,電影中二人的互換不僅跨越...
你會劃掉誰的名字?
美國的一所大學,在快下課時教授對同學們說 我和大家做個遊戲,誰願意配合我一下。一女生走上台來。教授說 請在黑板上寫下你難以割捨的二十個人的名字。女生照做了。有她的鄰居 朋友 親人等等。教授說 請你劃掉乙個這裡面你認為最不重要的人。女生劃掉了乙個她鄰居的名字。教授又說 請你再劃掉乙個。女生又劃掉了乙個...