5,有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。问在第n年的时候,共有多少头母牛?

输入:数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。

n=0表示输入数据的结束,不做处理。

输出:对于每个测试实例,输出在第n年的时候母牛的数量。

每个输出占一行。

分析:第一年有一头母牛和一头小母牛,第二年还是这一头母牛并且又生了一头小母牛,第三年有两头母牛一头是开始的一头,另一头是年末第一年母牛下的那一头小牛长大可以在第四年下小牛了。以此第四年有三头母牛第三年的两头加上第二年出生的小牛。以此类推可以用斐波那契递推公式可以观察到从第四年开始满足f(n)=f(n-1)+f(n-3)

注意:斐波那契数列的使用要用long long int来定义否则数过大数组会放不下.

源代码如下:

#include<iostream>

using namespace std;

int main()

{

int n,I;

long long f[100]={0,1,2,3};//*进行初始化.

while(cin>>n)

{

if(n!=0)

{    for(i=4;i<n+4;i++)

{

f[i]=f[i-1]+f[i-3];

}

cout<<f[n]<<endl;

}

if(n==0)

break;

}

return 0;

}

6,方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).

若给出A0, An+1, 和 C1, C2, .....Cn.

请编程计算A1 = ?

输入:包括多个测试实例。对于每个实例,首先是一个正整数n,(n <= 3000); 然后是2个数a0, an+1.接下来的n行每行有一个数ci(i = 1, ....n);输入以文件结束符结束。

输出:对于每个测试实例,用一行输出所求得的a1(保留2位小数).

分析:A1+A1=A0+A2-2C1

A1+A2=A0+A3-2(C1+C2)

A1+A3=A0+A4-2(C1+C2+C3)

A1+A4=A0+A5-2 (C1+C2+C3+C4)

……

A1+An=A0+An+1-2(C1+C2+C3+……Cn)

两边进行求和则:A1=[nA0+An+1-2(nC1+(N-1)C2+……2Cn-1+Cn)]/(n+1)

注意保留两位小数

源代码如下:

#include<stdio.h>

int main()

{

double a0,an1,c[3300],sum;

int n,i;

while(scanf("%d",&n)!=EOF)

{

scanf("%lf %lf",&a0,&an1);

sum=0;

for(i=1;i<=n;i++)

{

scanf("%lf",&c[i]);

sum+=(n-i+1)*c[i];//按照规律求和

}

sum=(double)((n*a0+an1-2*sum))/(n+1);//最后求出A1的值.注意强制转换的使用

printf("%.2lf\n",sum);

}

return 0;

}

7,不吉利的数字为所有含有4或62的号码。例如:

62315 ,73418, 88914,

都属于不吉利号码。但是,61152虽然含有6和2,6和2不连号,所以不属于不吉利数字之列。

对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。

输入:都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。

输出:对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。

分析:不含有4,6和2不连在一起,将吉利数的个数求出来,如果要求n~m之间的吉利数的个数,就用在m时的吉利数的个数减去在n-1时的吉利数的个数就是在n~m之间的吉利数的个数。

源代码如下:

#include<stdio.h>

int a[1000001]={0};

int zhao(int n)

{

while(n>0)

{

if(n%10==4||n%100==62)//判断每个数是否含有4和62.

return 0;

n/=10;

}

return 1;

}

int main()

{

int n,m,i;

for(i=1;i<1000001;i++)

a[i]=a[i-1]+zhao(i);

while(scanf("%d%d",&n,&m)!=EOF)

{

if(n==0&&m==0)  break;

else  printf("%d\n",a[m]-a[n-1]);

}

return 0;

}

8,“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。判断读入的字符串是否是“回文”。

输入:包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。

输出:如果一个字符串是回文串,则输出"yes",否则输出"no"

分析:从后往前,从前往后对应相等直到i=len,如果对应不相等则不是回文串。

以下是源代码:

#include<stdio.h>

#include<string.h>

#include<algorithm>

using namespace std;

int main()

{

char str[110];

int n;

scanf("%d",&n);

while(n--)

{

scanf("%s",str);

int len=strlen(str)-1;//除去“\0”的长度。

bool m=true;

for(int i=0;i<=len;i++,len--)

{

if(str[i]!=str[len])

{

m=false;//如果对应不相等,则不是回文串。

}

}

if(m==true)

printf("yes\n");

else

printf("no\n");

}

}

9,输入一个十进制数N,将它转换成R进制数输出。

输入:数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。

输出:为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

分析:

#include<stdio.h>

int main()

{

long n;

int a[1000],b,i,j,r;

while (scanf("%ld%d",&n,&r)!=EOF)

{

i=0;

if(n<0)

{

n=-n;printf("-");//对负数的处理。

}

if(n==0)

printf("0");//结束程序。

while(n>0)

{

b=n%r;

a[i++]=b;

n=n/r;

}

i=i-1;

for(j=i;j>=0;j--)//对于(r>10)处理,参考十六进制。

{

switch(a[j])

{

case 10:printf("A");break;

case 11:printf("B");break;

case 12:printf("C");break;

case 13:printf("D");break;

case 14:printf("E");break;

case 15:printf("F");break;

default :printf("%d",a[j]);

}

}

printf("\n");

}

}

10,空心三角形;

每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。

每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。

Sample Input

X 2

A 7

@

Sample Output

X

XXX

A

A A

A   A

A     A

A       A

A         A

AAAAAAAAAAAAA

分析:在对行处理时可以分为三部分进行处理,第一行最后一行以及从第二行到倒数第二行,每行的“第一个和最后一个”输出字符,

#include <iostream>

using namespace std;

int main()

{

char ch;

int n,flag=0;//flag用来判断是否为第一个三角形

while(cin>>ch)

{

if(ch=='@') break;

cin>>n;

if(flag)

cout<<endl;

flag=1;

if(n==1)

{

cout<<ch<<endl;

continue;

}

for(int i=1;i<n;i++) cout<<" ";

cout<<ch<<endl;

for(int i=2;i<n;i++)

{

for(int j=1;j<=n-i;j++) cout<<" ";

cout<<ch;

for(int j=1;j<=2*i-3;j++) cout<<" ";

cout<<ch<<endl;

}

if(n!=1)

{

for(int i=1;i<=2*n-1;i++)//对最后一行进行处理。

cout<<ch;

cout<<endl;

}

}

return 0;

}

疯狂的母牛,对方程的求解,不要62(不吉利数字),回文串,进制转换以及空心三角形相关推荐

  1. 【数据结构与算法】之深入解析“分割回文串II”的求解思路与算法示例

    一.题目要求 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文,返回符合要求的最少分割次数. 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割就 ...

  2. 【数据结构与算法】之深入解析“分割回文串”的求解思路与算法示例

    一.题目要求 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串,返回 s 所有可能的分割方案. 回文串是正着读和反着读都一样的字符串. 示例 1: 输入:s = "aab ...

  3. 【广义找零钱问题】 贪心算法求解进制转换问题

    原题如下,怪我没读懂题意就开始写代码,曲解了题意,就写出个这样的奇葩进制来.但是运行结果与我的预期(实际上是对题的的错误理解)相符. 功能(与上图无关) 实现自定义独特进制的输出.类似于找零钱问题,见 ...

  4. 求解如何判断一个整数是不是回文数的问题

    1.先了解概念 什么样的整数叫回文数? 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如:121是回文数,123不是回文数.这里有两个容易混淆的地方: ①.负数全都不是回文数.因为要 ...

  5. 求解最长回文子串----Manacher 算法

    最长回文子串问题:给定一个字符串,求它的最长回文子串长度. 如果一个字符串正着读和反着读是一样的,那么我们称之为回文串.例如:abba.aaaa.abvcba.123321等 暴力法:遍历字符串的所有 ...

  6. 丢番图(Diophantine)方程MATLAB求解

    丢番图(Diophantine)方程MATLAB求解   丢番图 (Diophantine) 方程在多项式中的一般形式为 A(z−1)X(z−1)+B(z−1)Y(z−1)=C(z−1)A(z^{-1 ...

  7. matlab求解复杂方程,MATLAB解复杂方程并求解

    MATLAB解复杂方程并求解0 现有三个等式,两个不等式(约束条件),想要求W/680的最小值,求助大神,应该怎么算呢?等式(三个)①(23086*Q1^2)/1000+(19648*Q9^2)/10 ...

  8. 向前欧拉公式例题_欧拉方程的求解

    1 欧拉方程的求解 1. 引言 在数学研究领域,我们经常会看到以数学家名字命名的概念.公式.定 理等等,让人敬佩跟羡慕 . 但是,迄今为止,哪位数学家的名字出现得最多 呢?他就是数学史上与阿基米德. ...

  9. php 判断是否是16进制,如何求解16进制字符串的验证

    求解16进制字符串的验证的方法:首先使用[hexdec($arr[$i]);]转成10进制相加:然后通过[base_convert((string)$sum,10,16);]转成16进制:最后使用[s ...

最新文章

  1. python字典导入mongodb_Python中的有序字典:添加到MongoDB
  2. 3.Linux 文件的压缩与打包
  3. 从计算机移到u盘如何加快速度,我的电脑移动文件到U盘里时进度很慢很慢,怎么让它变快?...
  4. python xpath语法-Python爬虫之XPath语法和lxml库的用法
  5. postgres中文文档
  6. spring-cloud-sleuth+zipkin追踪服务实现(一)
  7. 北斗导航 | 坐标转换:ECEF转LLA:GPS坐标系:WGS84(matlab代码)
  8. QT的QDebug类的使用
  9. android palette组件用法,Palette颜色提取使用详解
  10. 考勤助手——数据库3.0版本
  11. Android 弹出有确认按键的对话
  12. matplotlib tricks —— 平滑方法
  13. 【转】我是你的过客,你却是我的定格......
  14. python中print说法正确的是_python中的print()输出
  15. 11-linux基础八-正则表达式
  16. 动态规划之子串和(续。升级版)nyoj745
  17. 深入理解DRM(三)——MediaDRM和MediaCrypto
  18. win10 IDEA企业版下载及破解
  19. 趣头条自媒体审核不过怎么办,趣头条伪原创工具教程
  20. pmm9010在线测试软件,EMC/EMI 数字式测试接收机

热门文章

  1. 财务管理实战专家黄道雄老师
  2. x265-1.7版本-common/cudata.h注释
  3. java判断浏览地址是手机还是pc,判断是手机还是PC浏览器的方法
  4. 面试记录留给自己做纪念
  5. Java程序中如何输入数据
  6. 超级签名与企业签名有什么区别,开发者想要做签名分发需要注意什么?怎么防止入坑(当然入坑是必须的)
  7. ps—人物夸张的漫画
  8. 软件测试需要的证书认证
  9. VLAN Aggregation(VLAN 聚合,也称Super VLAN)
  10. 三十了终于明白了些事