1
九陰白骨爪是射雕英雄傳里的邪門武功,該武功用人類的頭蓋骨進行修煉,然后將骷髏頭整齊的排在地上或草叢中,3層的排列方案是品字形,既第1行1個,第2行3個,第3行5個;已經有一天梅超風已經修改完成了該門武功,且骷髏頭的堆也變得很高,排列規律從未改變。現在她想用計算機來統計一下這堆骷髏頭上共有多少個手指洞(請10歲以下同學切莫模仿)Input
輸入數據有多組,沒組1個數N (1 <= N < 100 ),代表骷髏頭的層數;Output
對于每組數據,在1行內輸出這堆骷髏頭的手指洞總數。Sample Input
12Sample Output
520出題本意是用遞歸寫
#include<cstdio>#include<iostream>using namespace std;long long lhy(int t){ if(t-1>=1) return 2*t-1+lhy(t-1); else return 1;}int main(){ long int i,j,k,p,t; while(cin>>t) { cout<<lhy(t)*5<<endl; } return 0;}2鳳舞九天
Problem:B
Time Limit:1000ms
Memory Limit:65536K
Description
“鳳舞九天”是陸小鳳的一門武功招式,每次出招的攻擊次數不同,第1次攻擊1次,第2次攻擊1次;然后n次的攻擊滿足下面的公式:f[n]=(6*f[n-1]+8*f[n-2])%9; (n >=3)為啥對9取余呢?因為是鳳舞九天啊!要是鳳舞七天的話,就對7取余了!Input
輸入數據有多組,每組1個數n (1 <= n <=100);Output
對于每組數據,在一行內輸出第n次出招時,攻擊的次數是多少?Sample Input
13100Sample Output
152這個題告訴我們,算數字的時候可以預處理加速
#include <stdio.h>#include <stdlib.h>#include <math.h>int a[205];int f(int n){ int i; a[1]=1; a[2]=1; for(i=3;i<=100;i++) {a[i]=(6*a[i-1]+8*a[i-2])%9;} return a[i];}int main(){ int n;f(150); while(scanf("%d",&n)!=-1) { printf("%d/n",a[n]); } return 0;}3求導
Problem:C
Time Limit:1000ms
Memory Limit:65536K
Description
大一的同學必須要注意,剛來林大的第一次考試是不及格最多的,因為大家都放松了警惕,最容易掛科的是高等數學,現在我們一起把數學復習一下。已知函數f(x)=3x2+2x+4,則它的導函數可以寫成(f(x+h)-f(x))/(x+h-x),即f(x)的導可以表示為:(f(x+h)-f(x))/h,現在給你x和h值,你會計算它的導數嗎?Input
輸入數據有多組,每組1行,每行2個數x和h,這2個數是實數.Output
按照題中的描述,輸出f(x)的導數值,結果保留2位小數,記得用雙精度(double)和換行啊!Sample Input
2 0.14 0.1Sample Output
14.3026.30Hint
輸入數據多組用while(scanf("%lf%lf",&x,&h)!=EOF),x和h定義成double求導……題目咋說你咋寫就行了
#include <stdio.h>#include <stdlib.h>float f(float a){ return 3*a*a+2*a+4;}int main(){ float x,h; while (scanf("%f%f",&x,&h)!=EOF) printf("%.2f/n",(f(x+h)-f(x))/h); return 0;}4大表哥的黑客技術
Problem:D
Time Limit:1000ms
Memory Limit:65536K
Description
大表哥最近在圖書館借了一本黑客入門,學會了如何用360查殺病毒和修復漏洞。現在他無論什么問題都想運用黑客技術來解決,但是由于大表哥太菜了。所以雖然今天這道題很簡單。能麻煩你運用函數幫助大表哥解決一下嗎?Input
輸入一個n,接下來輸入n個數a1~an。(n<1000,保證ai<2^32)Output
輸出a1~an的平方和。是不是很簡單,但是要求用函數哦Sample Input
21 231 2 3Sample Output
514我看好多人把題意想復雜了,沒說讓你遞歸讀入數據啊
而且啊 怎么都用unsigned long int……用long long 多省事
#include <iostream>#include <cstdio>#include <string.h>#include <algorithm>using namespace std;long long fun(int x,int a[]){ int i; long long sum=0,k; for(i=0;i<x;i++) { k=a[i]; sum+=k*k; } return sum;}int main(){ int n,j; int b[1010]; long long sum1; while(cin>>n) { for(j=0;j<n;j++) scanf("%d",&b[j]); sum1=fun(n,b); cout<<sum1<<endl; }}5字符集合
Problem:E
Time Limit:1000ms
Memory Limit:65535K
Description
編寫函數向給定一個字符集合中,插入一個新字符到指定位置:已知一個字符集,給定一個插入位置k,向該位置插入一個新字符。本題10分Input
輸入數據有多組,每組的第1行為n(<5),表示一組測試數據中字符集的個數,接下來原始字符串集(字符個數<100),插入的字符及位置;Output
輸出插入后的新字符集,每組數據單獨一行。Sample Input
3the c testD5Now,you can commit.Y8the game over.N6Sample Output
the cD testNow,you Ycan commit.the gaNme over.Hint
注意原始數據輸入時,回車的處理。 輸出正常輸完一行加個換行。差不多就是下面這個意思吧,
#include<stdio.h>void insert(char str[],char ins,int pos){ int i; for(i=0;i<pos;i++) printf("%c",str[i]); printf("%c",ins); printf("%s/n",str+pos);//后面的字符直接這樣輸出就好啦~~}int main(){ // freopen("data.in","r",stdin); char str[200]; int T,pos; char ins[2]; scanf("%d",&T); while(T--) { getchar();//讀入多余回車換行符號 gets(str); scanf("%s",ins); scanf("%d",&pos); insert(str,ins[0],pos); } return 0;}
新聞熱點
疑難解答