CC++小算法

    xiaoxiao2021-03-25  150

    C/C++语言基础小算法: 描述 无穷数列1,1,2,3,5,8,13,21,34,55…称为Fibonacci数列,它可以递归地定义为 F(n)=1 ………..(n=1或n=2) F(n)=F(n-1)+F(n-2)…..(n>2) 现要你来求第n个斐波纳奇数。(第1个、第二个都为1) 输入 第一行是一个整数m(m<5)表示共有m组测试数据 每次测试数据只有一行,且只有一个整形数n(n<20) 输出 对每组输入n,输出第n个Fibonacci数 样例输入 3 1 3 5 样例输出 1 2 5

    #include <iostream> using namespace std; int main() { int m,n,f1=1,f2=1,i; cin>>n; while(n--) { f1=1,f2=1; cin>>m; for(i=2;i<m;i++) { f1=f1+f2; f2=f1-f2; } cout<<f1<<endl; } return 0; }

    十进制转十六进制 题目描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。要求给出一个非负整数,将它表示成十六进制的形式。

    输入 第一行输入一个非负整数a,表示要转换的数,0<=a<=2147483647。

    输出 输出这个整数的16进制表示,其中A,B,C,D,E,F都是大写字母。

    样例输入 30 样例输出 1E

    #include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> int main() { long n; int a[1000]; int i,j=0; scanf("%ld",&n); if(n==0) printf("0"); else { while(n!=0) { a[j]=n%16; j++; n/=16; } for(i=j-1;i>=0;i--) { if(a[i]<=9) printf("%d",a[i]); else { printf("%c",a[i]-10+(int)'A'); } } } printf("\n"); return 0; }

    .核桃的数量 题目描述 小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:

    (1)各组的核桃数量必须相同;

    (2)各组内必须能平分核桃(当然是不能打碎的)

    (3)尽量提供满足1,2条件的最小数量(节约闹革命嘛)

    输入 输入包含三个正整数a,b,c,表示每个组正在加班的人数,用空格分开 (a,b,c均小于30)。

    输出 输出一个正整数,表示每袋中核桃的数量,不要输出多余的信息。

    样例输入 30 12 9 样例输出 180

    辗转相除法求得最大公约数,再两两求最小公倍数

    #include <iostream> using namespace std; int zhanzhuan(int x,int y); int main() { int x,y,z; int f1,f2; cin>>x>>y>>z; f1=x*y/zhanzhuan(x,y); f2=f1*z/zhanzhuan(f1,z); cout<<f2<<endl; return 0; } int zhanzhuan(int x,int y) { int t,s; if(y>x) { t=x; x=y; y=t; } while(y!=0) { s=y; y=x%y; x=s; } return x; }

    ASCII码排序 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。 输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。 输出 对于每组输入数据,输出一行,字符中间用一个空格分开。 样例输入 2 qwe asd 样例输出 e q w a d s

    #include<stdio.h> int main() { char a[3]; int n,i,j,t; scanf("%d ",&n); while(n--) { gets(a); //a[i]=getchar(); for(i = 0; i<3; i++) for(j = 0; j<3-i-1; j++) { if(a[j]>a[j+1]) { t = a[j]; a[j] = a[j+1]; a[j+1] = t; } } for(i=0;i<3;i++) printf("%c ",a[i]); printf("\n"); } return 0; }

    问题描述

    Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

    当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

    输入格式

    输入包含一个整数n。

    输出格式

    输出一行,包含一个整数,表示Fn除以10007的余数。

    说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。

    样例输入

    10

    样例输出

    55

    样例输入

    22

    样例输出

    7704

    数据规模与约定

    1 <= n <= 1,000,000。

    #include <stdio.h> int main() { long n,i; long f1,f2,f=1; f1=1,f2=1; scanf("%ld",&n); if(1 <= n <= 1000000) { for(i=2;i<n;i++) { f=(f1+f2)007; f1=f2007; f2=f; } printf("%ld ",f); } return 0; }

    问题描述

    给定圆的半径r,求圆的面积。

    输入格式

    输入包含一个整数r,表示圆的半径。

    输出格式

    输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。

    说明:在本题中,输入是一个整数,但是输出是一个实数。

    对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。

    实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。

    样例输入

    4

    样例输出

    50.2654825

    数据规模与约定

    1 <= r <= 10000。

    提示

    本题对精度要求较高,请注意π的值应该取较精确的值。你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。

    #include <stdio.h> #define PI 3.14159265358979323 #define NUM 100000000 int main() { double r,s; scanf("%lf",&r); s=((PI*r*r)*NUM+0.5)/NUM; printf("%.7lf",s); return 0; }

    问题描述   给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式   输出n行,每行为输入对应的八进制正整数。

      【注意】   输入的十六进制数不会有前导0,比如012A。   输出的八进制数也不能有前导0。

    样例输入   2   39   123ABC

    样例输出   71   4435274

      【提示】   先将十六进制数转换成某进制数,再由某进制数转换成八进制。

    #include <stdio.h> int main() { int n,sum=0; scanf("%d",&n); char h[100000],o[100000]; while(n--) { scanf("%s",h); int i,t; for(i=0;h[i]!='\0';i++) { if(h[i]<='9') t=h[i]-'0'; else t=h[i]-'a'+10; sum=sum*16+t; } //printf("%d\n",sum); int j=0; while(sum!=0) { o[j]=sum%8; j++; sum=sum/8; } for(i=j-1;i>=0;i--) { if(o[i]<8) printf("%d",o[i]); else printf("%d",o[i]-8); } printf("\n"); } }
    转载请注明原文地址: https://ju.6miu.com/read-32696.html

    最新回复(0)