zoukankan      html  css  js  c++  java
  • 蓝桥杯 2015 C++ A 题解

    部分题记录 所有题见链接

    链接:https://pan.baidu.com/s/1AOPvttpPoS_KOCrCBLxpzw
    提取码:jonc

    T5 牌型种数

    小明被劫持到X赌城,被迫与其他3人玩牌。
    一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
    这时,小明脑子里突然冒出一个问题:
    如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

    请填写该整数,不要填写任何多余的内容或说明文字。

    #include <stdio.h>
    #include<sstream>
    #include <iostream>
    using namespace std;
    
    
    int ans =0 ;
    
    //k是牌的点数  cnt是目前有多少张牌了
    void f(int k , int cnt){
    	 if(k == 14 && cnt==13){
            ans ++;
    		return ;
        }
        if(k  == 14 || cnt >13)return ;
       
    
        for (int i = 0; i < 5; ++i) {//分给的牌数0-4
            f( k+1 , cnt +i);
        }
    }
    
    int main(int argc , const char *argv[])
    {
       f( 1 ,0); //点数从1A开始
       cout<<ans<<endl;
        return 0;
    }
    

      

    T7 手链样式

    小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。
    他想用它们串成一圈作为手链,送给女朋友。
    现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?

    请你提交该整数。不要填写任何多余的内容或说明性的文字。

    #include <iostream>
    #include <stdlib.h>
    #include <string>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    
    int main(){
    	string s = "aaabbbbccccc";
    	vector<string> v1;
    	int ans=0 ;
    	do{
    		int i=0;
    		for(;i < v1.size();++i){
    			if(v1[i].find(s)!=string::npos)break;
    		}
    		
    		if(i!=v1.size())continue;
    		
    		
    		string s2 = s + s ; //考虑旋转  就是往后推移是否重复(顺序不变) 
    		v1.push_back(s2);
    		reverse(s2.begin(),s2.end());//考虑翻转  abc -> cba 这样的    
    		v1.push_back(s2);
    		++ans;
    		
    	}while(next_permutation(s.begin(),s.end()));
    
    	cout<<ans<<endl;
    	return 0;
    }
    

      T8 饮料换购

    乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。

    请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能喝到多少瓶饮料。

    输入:一个整数n,表示开始购买的饮料数量(0<n<10000)
    输出:一个整数,表示实际得到的饮料数

    例如:
    用户输入:
    100
    程序应该输出:
    149

    用户输入:
    101
    程序应该输出:
    151


    资源约定:
    峰值内存消耗 < 256M
    CPU消耗 < 1000ms


    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

    注意: main函数需要返回0
    注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
    注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

    提交时,注意选择所期望的编译器类型。

    #include <stdio.h>
    
    #include <iostream>
    using namespace std ;
    
    int chu(int x){
    	return x/3;
    }
    int yu(int x){
    	return x%3;
    }
    int ans = 0;
    
    void f(int a){
    	if(a<3)return;
    	
    	f(yu(a)+chu(chu(a)));
    	ans +=a ;  ans+=a/3 ;
    }
    
    
    int main(){
    	int a;//初始
    	int n ;
    	cin >> a ;
    	f(a);
    	cout<<ans<<endl;
    	
    	
    	return 0;
    }
    

      

  • 相关阅读:
    12864多级菜单实现,可方便实现无限级菜单(转)
    一起来学习PID
    STM32探秘 之FSMC
    RAD Studio (Delphi) Firemonkey 教程
    POS终端MAC算法-C语言实现
    STM32的PWM输入模式设置并用DMA接收数据
    AVR web server
    Linux 查看服务状态(服务与进程)
    linux设置开机自启动
    科目三靠边停车难度升级,超过50cm不合格怎么破?
  • 原文地址:https://www.cnblogs.com/Stephen-Jixing/p/12627592.html
Copyright © 2011-2022 走看看