Problem 164 「どの連続した3桁の和も与えられた数を超えない数」 †
どの連続した3桁の和も9以下のような(9以下は9を含む)20桁の数(先頭の0は認めない)はいくつあるか?
何も考えない漸化式で解けます。
試行時間1分
記述時間5分
計算時間1秒
#include<stdio.h>
#include<iostream>
#include<string.h>
int main(){
__int64 dp[10][10];
memset(dp,0,sizeof(dp));
for(int i=1;i<=9;i++){
for(int j=0;j+i<=9;j++){
dp[i][j]++;
}
}
for(int k=3;k<=20;k++){
__int64 next[10][10]={0};
for(int i=0;i<=9;i++){
for(int j=0;j+i<=9;j++){
for(int l=0;i+j+l<=9;l++){
next[j][l]+=dp[i][j];
}
}
}
memcpy(dp,next,sizeof(next));
}
__int64 ans=0;
for(int i=0;i<=9;i++){
for(int j=0;j+i<=9;j++){
ans+=dp[i][j];
}
}
std::cout<<"ans="<<ans<<"\n";
}
最終更新:2016年01月19日 15:55