A

#include <bits/stdc++.h>
using namespace std;
string s; 
int ans;
int main() {
	while (cin >> s){
		for (auto c:s) if (c == 'f') ans++;
	}
	cout << ans;
	return 0;
}

B

#include <bits/stdc++.h>
using namespace std;
int n;
double f(int x) {
	if (x == 1) return 4;
	else if (x == 2) return 3;
	else return f(x-1) + f(x-2)/2;
}
int main() {
	cin >> n;
	printf("%.2f",f(n));
	return 0;
}

C

#include <bits/stdc++.h>
using namespace std;
int n,k;
int dfs(int n, int k) {
	if ((n-k)&1 || n <= k) return 1;
	return dfs(n-k>>1,k) + dfs((n-k>>1)+k,k);
}
int main() {
	cin >> n >> k;
	cout << dfs(n,k);
	return 0;
}

D

#include <bits/stdc++.h>
using namespace std;
int n,ans,a[20];
void dfs(int x,int sum) {
	if (x == n+1) {
		ans += (sum%6 == 0);
		return;
	}
	dfs(x+1, sum+a[x]);
	dfs(x+1, sum);
}
int main() {
	cin >> n;
	for (int i=1; i<=n; ++i) cin >> a[i];
	dfs(1,0);
	cout << ans;
	return 0;
}

E

#include <bits/stdc++.h>
using namespace std;
int n,ans,a[20];
void dfs(int x,int sum) {
	if (x == n+1) {
		ans += (sum%6 == 0);
		return;
	}
	dfs(x+1, sum+a[x]);
	dfs(x+1, sum);
}
int main() {
	cin >> n;
	for (int i=1; i<=n; ++i) cin >> a[i];
	dfs(1,0);
	cout << ans;
	return 0;
}

F

#include<bits/stdc++.h>
using namespace std;

int m[30][30][30];

int f(int x,int y,int z){
    if(x<=0||y<=0||z<=0) return 1;
    if(x>22||y>22||z>22) return f(22,22,22);
    // 1 - 22
    if (m[x][y][z] != -1) return m[x][y][z];
    if(x<y&&y<z) 
		return m[x][y][z] = f(x,y,z-1)+f(x,y-1,z-1)-f(x,y-1,z);
    return m[x][y][z] = f(x-1,y,z)+f(x-1,y-1,z)+f(x-1,y,z-1)-f(x-1,y-1,z-1);
}
int main(){
    int x,y,z;
    memset(m,-1,sizeof(m));
    while(cin>>x>>y>>z){
        if(x==-1&&y==-1&&z==-1)break;
        cout<<"w("<<x<<", "<<y<<", "<<z<<") = "<<f(x,y,z)<<endl;
    }
    return 0;
}