C++;每周一些题(2)

class Solution {
public:
    int Fibonacci(int n) {
		int i=2;
        int prev=0,cur=1;
        if(n==0)
            return 0;
        if(n==1)
            return 1;
        while(i++<=n)
        {
            int tmp=cur;
            cur=cur+prev;
            prev=tmp;
        }
        return cur;
    }
};

class Solution1 {
public:
     int  NumberOf1(int n) {
         
         int i=0;
         int tag=1;
         int count=0;
         while(i++<32){
             if((n&(tag))!=0)
                 count++;
             tag=tag<<1;
             
         }
         return count;
     }
};
//最优解
class Solution {
public:
     int  NumberOf1(int n) {
         int i=0;
         while(n){
             n=(n-1)&n;
             i++;
         }
         return i;
     }
};

class Solution {
public:
    double Power(double base, int exponent) {
    	if(exponent==0)
            return 1;
          if(exponent<0&&base!=0)
            return 1/base*Power(base,exponent+1);
        return base*Power(base,exponent-1);
    }
};

int Numadd(char* num, int bit)
{
	int i = bit,needcarry=1;
	char carry = 1;
	while (i >0)
	{
		num[i-1]+=carry ;
		num[i] =‘0‘;
		if (num[i - 1] <= ‘9‘)
		{
			needcarry = 0;
			break;
		}
		--i;
	}
	if (needcarry == 1)
	{
		num[0] = ‘1‘;
		num[bit + 1] = ‘0‘;
	}
	return needcarry;
}
void Print1toN(int n)
{
	if (n <= 0)
		return;
	char num[MAX_SIZE] = {0};
	int i = 0;

	while (1)
	{
		if (num[i]<‘0‘)
			num[i] = ‘0‘;
		if (++num[i]>‘9‘)
		{
			if (Numadd(num, i) == 1)
				++i;
		}
		if (i == n)
			break;
		cout << num << ‘ ‘;
		//_sleep(100);
	}
	cout << endl;
}

时间: 2024-10-13 19:07:34

C++;每周一些题(2)的相关文章

OI每周刷题记录

2017.8.7 [线段树] codevs 1080 1081 1082 线段树练习 线段树练习2 线段树练习3 vijos1066 弱弱的战壕 hdu1166 敌兵布阵 [模拟] vijos1066 弱弱的战壕 [动态规划] vijos1071 新年趣事之打牌 福建师范大学附属中学oj1290 寻找牧场 poj3046 Ant Counting poj2718 Smallest Difference [离散化] poj 1177 Picture [高精度]HazeOJ#17 A+B++

C++ 每周一些题(4)

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列. class Solution { public:     bool IsPopOrder(vector<int> pushV,vector<int> popV) {         if(pushV.size()==0|

2018暑假集训第三周感想

啊,一下子就第三周了("'▽'") 时间总是匆匆,什么该在乎又什么该不在乎呢,有时候回头真的挺可惜自己拿来打游戏玩乐的时间,然而玩的时候真...爽┐(?-?)┌ 直入真题,这周讲的是有关拓扑排序和最短路径的东西,这个最短路径我老是想用深搜广搜,不过在大量数据面前,这明显会TLETLETLE来个三连( ̄ー ̄) 当我们在存储一些点类数据之间的情况时,往往是用一个二维数组来存储,而当数据大时明显再开这样的二维数组时明显会爆内存爆内存爆内存ヽ(´¬`)ノ 所以这时就可以用邻接链表的方式来存储相

这次的PION的总结

这次的PION的总结 果然不出所料,才\(129\)分. 同级的巨佬们\(170,180,\color {red}{280}\)\(\small{wc这什么神仙啊QAQ}\),都比我强 那我还有什么可以说的呢,明显就是我太菜了. 但这不是重点 鲁迅老师说了:\(\color {white}{鲁迅:我什么时候说过???}\) 要从自身开始找原因,否则你讲永远不会进步. 首先:暴力没打好 D1T2暴力居然可以\(\color {green}{AC}\)(不愧是CCF少爷机),验证了CCF的话:暴力出

浪到变形的前端女程序员的2019

前言 转眼又到一年年末,我是一个时间上总慢半拍的人.比如,其实毕业两年多了,才渐渐意识到,原来我现在再回学校的话,真的再没有我的专属床位了- 所以,要不是掘金有这个年度征文,我都没意识到原来到年末了.我回想了一下,我一年,真的发生了好多事,我也很努力地过着这一年,最终也都取得了自己还挺满意的结果,下面我就挑几个我最满意的事,记录一下- 工作-跳槽 年初的时候,跳槽了.主要原因是我想有多点自己的时间(多点¥¥),经营一下自己.毕业一年多,感觉自己老了十岁,工作日就是打代码,处理bug,周末就是躺尸

每周一道算法题005:切木棒

问题: 假设要把长度为n厘米的木棒切分为1厘米长的小段,但是1根木棒只能由1人切分,当木棒被切分为3段后,可以同时由3个人分别切分木棒.求最多有m个人时,最少要切分几次. 譬如n=8,m=3时如下图所示,切分4次就可以了. 求当n=20,m=3时的最少切分次数.求当n=100,m=5时的最少切分次数. 思路: 这道题最难的不是算法,而是理解题意.木棒刚开始只有1根,题目规定"1根木棒只能由1人切分",此时由1人切分后,变成2根:2根木棒再做切分,也要满足"1根木棒只能由1人切

每周一道算法题001:回文数

题目: 找出大于10的最小的2进制,8进制,10进制都是回文数的最小的数.回文数指的是正读和反读都是一样的数,例如:33,10001,123454321... 思路: 先转换进制,然后统一处理成字符串进行比较 解答: PHP function execute(){ $x = 11; while (1) { if ($x == strrev($x) && decbin($x) == strrev(decbin($x)) && decoct($x) == strrev(deco

每周一道算法题002:四则运算

问题: 求位于1000-9999,满足如下条件的数: 各位数字间加入四则运算符,也可省略,使得按四则运算计算的结果为原数字的各位数逆序排列. 例如:351 → 3×51 = 153 思路: 遍历1000-9999所有的数字,切分并组合运算符,拼成四则运算的算式然后计算.4位数中最大的数是9999,他可以被拆成999+9=1008,逆排后不可能等于原数,减法和除法不可能计算出比原数更大的数,所以只需要考虑乘法. php提供了eval函数,可以很方便的计算,但是需要对数字进行处理,因为08开头的数字

每周一道算法题003:翻牌

问题: 有100张写着数字1-100的牌,并按顺序排列.最开始所有牌都是背面朝上放置.某人从第2张牌开始,隔1张牌翻牌.然后第2, 4, 6, -,100张牌就会变成正面朝上.接下来,另一个人从第3张牌开始,隔2张牌翻牌(原本背面朝上的,翻转成正面朝上:原本正面朝上的,翻转成背面朝上).再接下来,又有一个人从第4张牌开始,隔3张牌翻牌.像这样,从第n张牌开始,每隔n-1张牌翻牌,直到没有可翻动的牌为止.求当所有牌不再变动时,所有背面朝上的牌的数字. 思路: 这道题思路有很多种: 思路1设i为轮次