加法变乘法——第六届蓝桥杯C语言B组(省赛)第六题

原创



加法变乘法

我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:
1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
就是符合要求的答案。

请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

注意:需要你提交的是一个整数,不要填写任何多余的内容。

此题思路很简单,有48个‘+’号,题目要求将其中两个不相邻的 ‘+’ 号变成 ‘*’ 号后式子得出的结果是2015.

从第1个 ‘+’ 号开始遍历,依次将第1~46个 ‘+’ 号变成 ‘*’ 号,定位好第一个 ‘+’ 号后,定位第二个 ‘+’ 号,

即从第一个 ‘+’ 号后定位第二个 ‘+’ 号(注意第一个 ‘+’ 号前面不能是 10 )。定位好两个 ‘+’ 号后判断式

子值是否等于2015,等于跳出循环,否则继续循环。

#include<stdio.h>

int main()
{
    int i;
    int s1=0;
    int s2=0;
    int total=0;
    int j;

    for(i=1;i<=46;i++)    //i,j值不能变
    {
        if(i==10)
            continue;
        s1=i*(i+1);    //第一个*值

        for(j=i+2;j<=48;j++)
        {
            s2=j*(j+1);    //第二个*值 

            int vari;
            for(vari=1;vari<=49;vari++)
            {
                if( vari!=i && vari!=i+1 && vari!=j && vari!=j+1 )
                    total=total+vari;
            }

            total=total+s1+s2;
            if(total==2015)
            {
                printf("%d",i);
                return 0;
            }
            else
            {
                total=0;
                continue;
            }
        }
    }

    printf("%d",i);
    return 0;
} 

后段代码思路是相同的,是自己后面复习重新敲的。

#include<stdio.h>

int flag=0;
int ff=0;

int main(){

    int i=0;
    int j=0;    //j代表第一个*前面的数字
    int z=0;    //z代表第二个*前面的数字
    int total=0;

    for(j=1;j<=46;j++){    //定位第一个*
        if(j==10){
            continue;
        }
        for(i=1;i<=49;i++){
            if(i==j){    //定位好第一个*
                total+=i*(i+1);
                int i_t=0;
                while(i_t!=i+2){
                    i_t++;
                }
                int total_=total;    //备份第一阶段的总值
                int i_tt=i_t;    //备份第一阶段的后值
                for(z=j+2;z<=48;z++){    //定位好第二个*
                    for(i_t=i_tt;i_t<=49;i_t++){
                        if(i_t==z){
                            total+=i_t*(i_t+1);
                            i_t++;
                        }
                        else{
                            total+=i_t;
                        }
                    }
                    if(total==2015){
                        printf("%d",j);
                        flag=1;
                        break;
                    }
                    else{
                        total=total_;
                    }
                }
                ff=1;
            }
            else{
                total+=i;
            }
            if(flag==1){
                break;
            }
            if(ff==1){
                total=0;
                ff=0;
                break;
            }
        }
        if(flag==1){
            break;
        }
    }

    return 0;
}

答案:16

13:25:54

2018-05-15

原文地址:https://www.cnblogs.com/chiweiming/p/9039483.html

时间: 2024-10-11 16:31:40

加法变乘法——第六届蓝桥杯C语言B组(省赛)第六题的相关文章

2015年第六届蓝桥杯C/C++B组省赛题目解析

一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张. 请提交该数字(一个整数),不要写任何多余的内容或说明性文字. 分析:直接枚举10000-99999之间的数字,如果带4,直接排除:不带4的,记录一次,直到枚举完后输出. #include <iostream

第七届蓝桥杯C语言C组-(自己懂的题目)

第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球日报和我们地球的城市早报是一样的, 都是一些单独的纸张叠在一起而已.每张纸印有4版. 比如,某张报纸包含的4页是:5,6,11,12, 可以确定它应该是最上边的第2张报纸. 我们在太空中捡到了一张X星球的报纸,4个页码分别是: 1125,1126,1727,1728 请你计算这份报纸一共多少页(也就

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

第六届蓝桥杯软件大赛A组预赛

以下只是我的个人答案,欢迎讨论指正! 还有最后两题求正解 方程整数解 方程: a^2 + b^2 + c^2 = 1000 (或参见[图1.jpg]) 这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解. 你能算出另一组合适的解吗? a,b,c=10,18,24 请填写该解中最小的数字. 10 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 代码: #include <iostream> #include <cstdio> #include <c

第九届蓝桥杯C/C++B组省赛感想

因为做了近三年的初赛题,都对了5题+,所以这次比赛前信心满满,心里想最少水个省二没问题.可我怎么知道今年的套路居然和以前不一样了!一题深搜都没有,想想一周前做的第七届初赛题,10题有3.4题深搜题. 唉,考完看了看,今年第一次参加(应该也是最后一次参加),连省三都不知道能不能水到,小题确定对2题,可能对一题,大题可能对一题.谁能知道写了一大堆代码却错了的感觉(哭). 真的很难受,对不起自己练习过的万行代码,为什么咱就这么凉了.其实也只能怪自己,虽说练习了200左右的题量,但是可以练习更多的,主要

第七届蓝桥杯C语言B组题目总结

这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. (ps:式子是:a+b/c+m/n=10,其中,a,b,c都是一位数,m,n都是三位数.总共10个数字,并且这些数是1~9.不能重复) 比如: 6+8/3+952/714 就是一种解法, 5+3/1+972/486 是另一种解法. 这个算式一共有多少种解法? 注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字. 解题思路:暴力枚举.a,b,c从1~9中一次选取,保证两两不相同即可.利用数组take[10],来记录已取数字.m

第七届蓝桥杯C\C++B组省赛题目——方格填数

第一部分:题目 方格填数 如下的10个格子   +--+--+--+   |  |  |  |+--+--+--+--+|  |  |  |  |+--+--+--+--+|  |  |  |+--+--+--+ (如果显示有问题,也可以参看下图) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 第二部分:思路 这个题目有点表述不明,不知道0~

第七届蓝桥杯C/C++B组省赛题目解析

题目1:煤球数目 有一堆煤球,堆成三角棱锥形.具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 解析: 第一层:1个. 第二层:2*3-3=3个. 第三层:3*3-3=6个. 第四层:4*3-3=10个. 代码如下: int s=0,a=0; for(int i=1;i<=100;i++){ a=a+i;

2015第六届蓝桥杯全国软件大赛省赛(预赛)总结

这是我上大学以来第一次自发的写总结,这也许意味着我对大学的看法和接下来的大学生活都将有所改变吧.首先说说引导我写这篇总结的"人物"吧,RUI,从大一开始便是同学,直到大三成为了舍友.他的成绩一直很好,如果没记错的话,大一专业第一名,大二好像也是第一第二的,总之在班里一直名列前茅,在学习成绩里边,最让我羡慕的就是他的英语了,四级和六级都是一次过,并且,六级考了500多分(具体多少记不清了),呃...除了学习成绩好之外,专业能力更是没的说,在大一就加入了学院里的ACM实验室,编程能力那也是