Wannafly挑戰賽6 E 雙拆分數 思維

2021-08-14 01:26:02 字數 828 閱讀 9691

對於乙個數字串 s,若能找到一種將其分成左右兩個非空部分 s1,s2 的方案,使得:

1、s1,s2 均無前導零

2、存在兩個正整數 a,b,使得 b 整除 a,且 a/b=s1, a*b=s2

那麼我們記這是乙個合法的分法。特別地,如果乙個串有兩個或更多個不同的合法的分法,那麼我們稱這個數字串是雙拆分數字串。

給定乙個 n,要求構造乙個長度恰為 n 的雙拆分數字串。如果無解,輸出 -1。

輸入僅一行乙個正整數 n(1 <= n <= 300)。

僅一行乙個數字串或者 -1。

題意: 弄清雙拆分數字串定義即可

分析: 以前沒做過構造題,沒思路,看了正解後發現好坑,如下:

n <= 3 顯然無解

此後如果 n = x 有解,那麼 n = x + 2 的情況,只需要在 n = x 的解的末尾加兩個零就可以了,這時就相當於 a 和 b 同時乘以了乙個 10。

n = 4 : 1144 是乙個合法解

(s1 = 1,s2 = 144,a = 12,b = 12)

(s1 = 11, s2 = 44,a = 22,b = 2)

n = 5 : 16400 是乙個合法解

(s1 = 1,s2 = 6400,a = 80,b = 80)

(s1 = 16, s2 = 400,a = 80,b = 5)

感覺給的樣例太坑啦,學習下這種思路吧~~

#include 

using

namespace

std;

int main()

Wannafly挑戰賽6 E 雙拆分數 數學 構造

description 對於乙個數字串 s,若能找到一種將其分成左右兩個非空部分 s1,s2 的方案,使得 1 s1,s2 均無前導零 2 存在兩個正整數 a,b,使得 b 整除 a,且 a b s1,a b s2 那麼我們記這是乙個合法的分法。特別地,如果乙個串有兩個或更多個不同的合法的分法,那麼...

Wannafly挑戰賽6 鎖

106號房間共有n名居民,他們每人有乙個重要度。房間的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複製並發給任意多個居民。每個106房間的居民持有若干鑰匙,也就是1到k的乙個子集。如果幾名居民的鑰匙的並集是1到k,即他們擁有全部鎖的對應鑰匙,他們...

Wannafly挑戰賽14 E 線性基

題目描述 給乙個1 base陣列,有n次操作,每次操作會使乙個位置無效。乙個區間的權值定義為這個區間裡選出一些數的異或和的最大值。求在每次操作前,所有不包含無效位置的區間的權值的最大值。輸入描述 第一行讀入乙個正整數 1 n 105 第二行讀入n個正整數,第i個表示a i 0 a i 109 第三行...