信奥一本通:1094:与7无关的数

本文介绍了如何使用C++编写一个程序,计算1到n(n<100)中满足特定条件(能被7整除或者个位和十位有7)的整数的平方和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
using namespace std;
int main(){
	int n,sum = 0;
	cin >> n;
	for (int i = 1;i<=n; i++){
		//题目的要求是:
		//1,能被 7整除,2,个位十位上有7的话
		//没有百位,因为题目规定n<100 
		if (i%10!=7 && i%7!=0 && i/10 != 7){
			sum += i * i;
		}
	}
	cout << sum << endl;
}

### 关于一本 1756 题目解析 对于过路费这一类问题,动态规划是一种有效的解决方案。该方法过构建二维组 `dp` 来存储到达每一个位置所需的最小费用,并逐步更新这些值直到找到最优路径。 #### 动态规划状态转移方程定义 设 `dp[i][j]` 表示从起点到第 i 行 j 列格子所花费最少的钱,则有如下关系: - 如果当前位置不是第一列也不是最后一列,则可以从左边或者上边过来; - 特殊情况处理:当位于边界时只有一种进入方式; 具体实现过程中需要注意初始化以及边界条件的设定[^1]。 ```cpp #include <iostream> using namespace std; const int N = 105; int n, m; long long dp[N][N], cost[N][N]; void solve() { cin >> n >> m; // 输入地图大小 for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) cin >> cost[i][j]; // 输入每个节点经过所需支付金额 fill(&dp[0][0],&dp[n+1][0]+m+1,INT_MAX); // 初始化DP表为极大值 dp[1][1]=cost[1][1]; for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j){ if(i==1 && j==1) continue; // 起始点不需要计算 dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + cost[i][j]; } } cout << "Minimum toll fee is:"<<endl<<dp[n][m]<< endl; // 输出最右下角的结果即为答案 } int main(){ solve(); return 0; } ``` 此代码实现了基于给定的地图尺寸和各节点过路费来求解从左上角走到右下角所需要的最小总开销的功能。注意这里假设输入据合法且至少存在一条可行路线可以抵达终点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值