杰哥特別喜歡和數字打交道,現在他有乙個正整數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 排列為第...