NC22835. 小睿睿的等式
描述
输入描述
一行2个整数n,k,保证n取模k为0
输出描述
一行一个整数,表示答案
示例1
输入:
60 2
输出:
4
说明:
11+49=60示例2
输入:
100000 1250
输出:
3092
C++14(g++5.4) 解法, 执行用时: 270ms, 内存消耗: 196308K, 提交时间: 2019-03-25 22:24:54
#include<iostream> using namespace std; int b[10]={6,2,5,5,4,5,6,3,7,6},a[50000001]; int main() { int n,k; cin>>n>>k; for(int i=1;i<=n;i++) a[i]=a[i/10]+b[i%10]; int m=n/k-4-a[n],ans=0; for(int i=0,j=n;i<=j;i++,j--) { if(a[i]+a[j]==m) { ans++; } } cout<<ans<<endl; }
C++11(clang++ 3.9) 解法, 执行用时: 246ms, 内存消耗: 196068K, 提交时间: 2020-02-27 12:22:57
#include<bits/stdc++.h> using namespace std; int n,m,c[50000005],ans,j,i,p[10]={6,2,5,5,4,5,6,3,7,6}; int main() { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) c[i]=c[i/10]+p[i%10]; m=n/m-4-c[n]; for(i=1,j=n-1;i<=j;i++,j--) ans+=c[i]+c[j]==m; printf("%d\n",ans); return 0; }