20250316 OPPO笔试

#include <iostream>#include <vector>#include <string>using namespace std;
const int MOD = 1e9 + 7;
int main() {
  int n;string s;cin >> n >> s;
  long long sum_known = 0;
  vector<int> unknown_positions;

  for (int i = 0; i < n; ++i) {
	  if (s[i] == '?') {
		  unknown_positions.push_back(i);
	  } else {
		  sum_known += s[i] - '0';
	  }
  }

  int s_rem = sum_known % 3;
  int target_rem = (3 - s_rem) % 3;

  if (unknown_positions.empty()) {
	  cout << (s_rem == 0 ? 1 : 0) << endl;
	  return 0;
  }

  bool first_is_unknown = (unknown_positions[0] == 0);

  vector<long long> dp(3, 0);

  if (first_is_unknown) {
	  // 处理第一个问号(不能为0)
	  dp[0] = 3; // 可选的余数0的数字:3,6,9
	  dp[1] = 3; // 余数1:1,4,7
	  dp[2] = 3; // 余数2:2,5,8

	  // 处理剩余问号
	  for (int i = 1; i < unknown_positions.size(); ++i) {
		  vector<long long> new_dp(3, 0);
		  for (int prev = 0; prev < 3; ++prev) {
			  // 转移公式:dp[prev]表示前 i-1 个数值为prev的可能组合数,(prev + 0) % 3 表示prev转移为(prev + 0)的组合数。
			  new_dp[(prev + 0) % 3] = (new_dp[(prev + 0) % 3] + dp[prev] * 4) % MOD;
			  new_dp[(prev + 1) % 3] = (new_dp[(prev + 1) % 3] + dp[prev] * 3) % MOD;
			  new_dp[(prev + 2) % 3] = (new_dp[(prev + 2) % 3] + dp[prev] * 3) % MOD;
		  }
		  dp = new_dp;
	  }
  } else {
	  // 所有问号都不是首位
	  dp[0] = 1;
	  for (int pos : unknown_positions) {
		  vector<long long> new_dp(3, 0);
		  for (int prev = 0; prev < 3; ++prev) {
			  new_dp[(prev + 0) % 3] = (new_dp[(prev + 0) % 3] + dp[prev] * 4) % MOD;
			  new_dp[(prev + 1) % 3] = (new_dp[(prev + 1) % 3] + dp[prev] * 3) % MOD;
			  new_dp[(prev + 2) % 3] = (new_dp[(prev + 2) % 3] + dp[prev] * 3) % MOD;
		  }
		  dp = new_dp;
	  }
  }
  cout << dp[target_rem] % MOD << endl;
  return 0;
}
#OPPO笔试##笔试#
全部评论

相关推荐

河南人,双一流本,985硕,本人技术一般,不是很能卷,但也可以在不保证身体健康出问题下拼命学,npy在成都。#求助offer选择#&nbsp;春招分享&nbsp;#offer#&nbsp;面经&nbsp;#工作选择1.南芯半导体(base成都,第一年去上海,多2.6w)&nbsp;&nbsp;算法岗(芯片算法)&nbsp;&nbsp;说是成都搞算法的2,3个人,校招只有一个hc,社招倒是招了几个,用matlab仿真,c#offer选择!!!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;语言定点化集成。25k*16,40w优点:钱多,985,保证双休,部门主管是院友,不用和npy异地缺点:需要异地1年,平台太小,公司在成都只有2层写字楼,没做过芯片算法,需要重新学,公司做电源,快充的方向窄,公司算法人少,培养应该就是老人带新人。2,平高集团,老家的电气装备集团,之前的电网子公司,21年和西电集团合并为新央企。base在老家平顶山,离家8km,很近,每月1.33w,六险二金,老家房价5-6k。优点:离家8km,钱在当地很高了,电网的子公司,偏垄断。缺点:要和npy异地,这个很膈应,老家发展不行,后代要重走我来时的路。3,华为上海无线13级,投的AI岗,说部门AI刚起步,主要还是c语言开发为主,1年后转回成都,公积金基本工资5%,4年合同,试用期6个月。优点:平台大,相对2年保护期,集团业务丰富,可换行业内转。缺点:无年假,13级太低了,实习过还给了13级,压力大,需要转c语言开发npy在成都需至少异地1年,很卷。4,中电信人工智能公司(base成都)&nbsp;大数据研发岗,电信子公司,七险二金,12%比例,总包25w。优点:国企,相对于大厂压力不算大,七险二金,方向#offer选择!!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;比较热门。缺点:运营商子公司,可能有末位淘汰,公司成立1年,底蕴小,管理混乱,校招培养不完善。大伙投下票,并说下原因就更好了。引流:阿里&nbsp;腾讯&nbsp;美团&nbsp;快手&nbsp;字节跳动&nbsp;华为&nbsp;天翼云蔚来理想&nbsp;小鹏&nbsp;小红书&nbsp;携程&nbsp;联通&nbsp;移动&nbsp;云计算&nbsp;寒气寒冬将至&nbsp;财报盈利&nbsp;亏损&nbsp;输送大厂&nbsp;卷死&nbsp;躺平&nbsp;摆烂&nbsp;校招简历求捞&nbsp;挂了hr面试官&nbsp;应届润毕业cy焦虑预期PUA解约试用期run跑路&nbsp;国企外企一线二线打工人佛系&nbsp;学历厂985c9华五&nbsp;****&nbsp;白菜&nbsp;大白菜开水&nbsp;猪厂鹅厂&nbsp;福报996菊厂买房房贷上车后悔带校招生成长试用期晋升答辩涨薪求捞实习上岸转正秋招22届23届机会前端后端测试算法数据#决赛圈#&nbsp;晒晒我的offer&nbsp;#工作方向抉择#&nbsp;人生第一个offer&nbsp;
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务