• 面试笔试题


    • 题意:

    • 特殊数字”是指只能被分解为2,3,7的乘积的数字。“特殊数字”序列为1, 2, 3, 4, 6, 7, 8, 9, 12, 14, ...展示了前10“特殊数字”。按照惯例,1也是“特殊数字”。给定整数n,写一个程序,找到序列中,第n个“特殊数字”。如:n=9,找到“特殊数字”序列中第9位数字,也就是输出12

      输入:

      每一行包含一个正整数,n (n <= 1500)。如果输入的一行为0,则输入终止。

      输出:

      对于每一行输入,输出“特殊数字”。注意不要解析输入为0的行

      示例:

      输入:

      1

      2

      9

      0

      输出:

      1

      2

      12

    • 分析:

    • n <= 1500 直接把该范围的结果全部枚举,然后排序即可

        不过需要注意2的幂次多余3的幂次多余7的幂次

      代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    
    vector<ll> v;
    
    const ll up = 1e18;
    
    ll fpow(ll a, ll b)
    {
    	ll cnt = 1;
    	while(b)
    	{
    	   if(b&1)
    		cnt *= a;
    	   b >>= 1;
    	   a *= a;
    	}
    	
    	return cnt;
    }
    
    void init()
    {
    	for(int i = 0;i < 30;i++)
    	for(int j = 0;j < 20;j++)
    	for(int k = 0;k < 10;k++)
    	{
    		ll cur = fpow(2,i)*fpow(3,j)*fpow(7,k);
    		if(cur < 0) continue;
    		v.push_back(cur);
    	}
    }
    int main()
    {
    	init();
    	sort(v.begin(),v.end());
    	
    	int n;
    	while(cin >> n && n)
    	{
    		cout << v[n-1] << endl;
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    qt creator源码全方面分析(2-10-4)
    qt creator源码全方面分析(2-10-3)
    qt creator源码全方面分析(2-10-2)
    qt creator源码全方面分析(2-10-1)
    qt creator源码全方面分析(2-9)
    flex布局使用
    filter,map,reduce三个数组高阶函数的使用
    git的使用总结
    axios学习和使用
    vuex的学习
  • 原文地址:https://www.cnblogs.com/mch5201314/p/11918585.html
Copyright © 2020-2023  润新知