题解 | #九九八十一#

九九八十一

https://ac.nowcoder.com/acm/contest/58604/A

非常简单的一道题,一开始想出数位dp来着,后来发现数位dp处理乘法的字符数不好搞,干脆降低数据范围做一个签到题。主要是注意*,=这三个字符就行,剩下的直接暴力去循环乘法表统计字符。由于备注说答案一定大于1并且不是回车,这就排除了'\n'和文件结束符的会有歧义的情况。

#include<cstdio>
using namespace std;
int n;
char m;int qwq;
int ans;
int cal(int q) {
	int cnt=0;
	if(q==0) {return qwq==0;}
	while(q) {
		int now=q%10;
		q/=10;
		if(now==qwq) cnt++;
	}
	return cnt;
}

int main() {
	scanf("%c",&m);
	scanf("%d",&n);
	if(m==','){printf("%d",n*(n+1)/2);return 0;}
	if(m=='='){printf("%d",n*(n+1)/2);return 0;}
	if(m=='*'){printf("%d",n*(n+1)/2);return 0;}
	qwq=m-'0';
	for(int i=1;i<=n;i++)
		for(int j=1;j<=i;j++) {
			ans=ans+cal(i)+cal(j)+cal(i*j);
		}
	printf("%d",ans);return 0;
} 
全部评论

相关推荐

三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务