1 2 杰哥和數字

2021-09-13 13:51:05 字數 1387 閱讀 3396

杰哥特別喜歡和數字打交道,現在他有乙個正整數x,他想知道有多少個滿足要求的正整數d存在,要求是d是x的因子,並且d和x至少有一位相同。

★輸入格式

只有一行,乙個正整數x。(n<=1000000000)。

對於30%的資料,n<=100

對於50%的資料,n<=200

對於100%的資料,n<=1000000000

★輸出格式

只有一行,乙個整數表示滿足要求的數字d的個數。

★輸入樣例

10★輸出樣例

2思路非常簡單明瞭:首先我們必須找到x的所有因子,然後再對因子進行逐個操作。

//matsuri

#include

#include

#include

#define max 12

int x,n=0;

int a[max]

,b[max]

;//原數x拆完後儲存於a,找到的因子拆完後儲存於b

intsplit

(int num,

int l)

;int

issamefigure

(int xx,

int ii)

//判斷x和它的因子是否存在相同的數字}if

(flag==1)

break;}

return flag;

}int

split

(int num,

int l)

// 拆數字用(*可以積累),小細節是拆完後每位數字是以倒序儲存在陣列裡的

return i;

// 返回的是待拆數字的位數(也就是a或b陣列裡面非0元素的個數)

}int

main()

else}}

printf

("%d"

,n);

return0;

}

關於issamefigure()的過程我們可以梳理一下,其實很簡單:

以36為例子,它的因子是1,2,3,4,6,9,18,36

i=1時,else部分裡,第乙個issamefigure的實參是(36,1),第二個是(36,36)

i=2時,第乙個issamefigure的實參是(36,2),第二個是(36,18)

i=3時,第乙個issamefigure的實參是(36,3),第二個是(36,12)

i=4時,第乙個issamefigure的實參是(36,4),第二個是(36,9)

i=6時,第乙個issamefigure的實參是(36,6),第二個是(36,6),存在重複累計情況,所以才有了if裡的操作

這樣就把因子找全了,不理解的話多嘗試幾個例子就明白了

演算法設計與分析 1 3 杰哥和數字

有乙個正整數x,想知道有多少個滿足要求的正整數d存在,要求是d是x的因子,並且d和x至少有一位相同。只有一行,乙個正整數x。對於30 的資料,x 100。對於50 的資料,x 200。對於100 的資料,x 1000000000。只有一行,乙個整數表示滿足要求的數字d的個數。102 順著題目思路,分...

杰哥私房題 487 3279

號碼的標準格式是七位十進位制數,並在第 三 第四位數字之間有乙個連線符。撥 號盤提供了從字母到數字的對映,對映關係如下 a,b,和c 對映到 2 d,e,和f 對映到 3 g,h,和i 對映到 4 j,k,和l 對映到 5 m,n,和o 對映到 6 p,r,和s 對映到 7 t,u,和v 對映到 8...

杰哥私房題 排列

問題 大家知道,給出正整數n,則1 到n 這n 個數可以構成n!種排列,把這些排列按照從 小到大的順序 字典順序 列出,如n 3 時,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1 六個排列。給出某個排列,求出這個排列的下k 個排列,如果遇到最後乙個排列,則下1 排列為第...