在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
原创 加法变乘法 我们都知道:1+2+3+ ... + 49 = 1225 比如: 请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交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 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论