1.2杰哥和数字
題目
題意:求一個(gè)數(shù)字的因子中,有多少個(gè)因子,是符合與原數(shù)字有相同數(shù)字的數(shù)的
思路:先把原數(shù)字拆開,村在數(shù)組里,寫一個(gè)判斷的函數(shù),輸入一個(gè)數(shù)字,就可以返回和原來的數(shù)字是不是有相同數(shù)字。在for一邊,從1到根號(hào)n,看看有哪些是n的因子,然后這樣看的時(shí)候,也看看另一個(gè)因子是不是符合條件,注意,比如輸入100,它的因子有10*10,這時(shí)候如果兩個(gè)因子相同就只要判斷一次就好了
#include<iostream> #include<stdio.h> #include<stdlib.h> #include <iomanip> #include<cmath> #include<float.h> #include<string.h> #include<algorithm> #include<vector> #include<queue> #define sf scanf #define pf printf #define scf(x) scanf("%d",&x) #define scff(x,y) scanf("%d%d",&x,&y) #define prf(x) printf("%d\n",x) #define mm(x,b) memset((x),(b),sizeof(x)) #define rep(i,a,n) for (int i=a;i<n;i++) #define per(i,a,n) for (int i=a;i>=n;i--) typedef long long ll; const ll mod=1e9+7; const double eps=1e-8; const int inf=0x3f3f3f3f; using namespace std; const double pi=acos(-1.0); const int N=1e5+12; int sum[10]; void init(int n) //先把這個(gè)數(shù)字的每一位拆開,村在sum數(shù)組里 {mm(sum,0);{sum[n%10]++;n/=10;} } int judge(int n) //判斷這個(gè)數(shù)字和原來的數(shù)字有沒有相同的 {while(n){if(sum[n%10])return 1;n/=10;}return 0; } int main() {int n;scf(n);if(n==1){pf("1");return 0;} init(n);int ans=1; //自己一定符合條件,所以答案從一開始for(int i=1;i*i<=n;i++){if(n%i==0){if(judge(i))ans++;if(n/i!=i) //判斷另一個(gè)因子符合嘛,如果i*i等于n的時(shí)候,就只會(huì)判斷一次if(judge(n/i))ans++;}}prf(ans);return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/wzl19981116/p/10043155.html
總結(jié)
- 上一篇: Java输入输出入门 A+B
- 下一篇: 关于npm和yarn 安装vue脚手架