前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极AI的研究人员,月神自然去看了此神剧。
由于太过兴奋,晚上月神做了一个奇怪的梦,月神梦见自己掉入了一个被施放了魔法的深渊,月神想要爬上此深渊。
已知深渊有N层台阶构成(1 <= N <= 1000),并且每次月神仅可往上爬2的整数次幂个台阶(1、2、4、…),请你编程告诉月神,月神有多少种方法爬出深渊
要点:动态规划,类似于爬楼梯,只不过累计求和的不是往前数的两阶,而是2的所有幂阶。根据 https://blog.csdn.net/FlushHip/article/details/83822873 ,输出数据还是要mod 1000000003。
#include<iostream>
#include<vector>
using namespace std;
int main(){
long long n,k;
cin>>n;
for(long long i=0;i<n;i++)
{
cin>>k;
vector<long long> v;
v.push_back(1);
// fill out the table
for(long long j=1;j<=k;j++){
long long num=0;
long long last=1;
while(j>=last){
num+=v[j-last];
last=last<<1;
}
v.push_back(num);
}
cout<<v[k];
if(i<n-1)cout<<endl;
}
return 0;
}
通过键盘输入一串小写字母(a~z)组成的字符串。
请编写一个字符串归一化程序,统计字符串中相同字符出现的次数,并按字典序输出字符及其出现次数。
例如字符串"babcc"归一化后为"a1b2c2"
之前做过一道类似的题,于是无脑上了python
x=input()
d=dict()
r=''
for i in range(len(x)):
if x[i] in d:
d[x[i]]+=1
else:
d[x[i]]=1
for i in ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','p','q','r','s','t','u','v','w','x','y','z']:
if i in d:
r=r+i+str(d[i])
print(r)
只通过了50%,卡在了长到令人发指的一个case上,借用以下大佬的代码
#include <stdio.h>
#define SIZE 128
int main(void){
int count[26] = {0};
char buf[SIZE];
// char c;
// while( ( c = getchar() ) != '\n' )
// count[c-'a'] ++;
fgets(buf, SIZE, stdin);
int i = 0;
while( buf[i] != '\n' ){
count[buf[i++] - 'a'] ++;
if( i == SIZE ){
i = 0;
fgets(buf, SIZE, stdin);
}
}
i = 0;
while( i < 26 ){
if( count[i] != 0 )
printf("%c%d",i+'a',count[i]);
i ++;
}
return 0;
}
快手的题还是很灵活的
ref:
https://blog.csdn.net/FlushHip/article/details/83822873